大佬教程收集整理的这篇文章主要介绍了在各种开发项目中使用公用类库的扩展方法,通过上下文方式快速调用处理函数,大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
不管我们开发是基于Asp.net core 还是.net core,或者还是.net framework的相关应用,如果有一个比较全面的公用类库以及相关的扩展函数来支撑,我们开发项目上会节省很多相关的处理方法查询和封装。本篇随笔主要针对性的介绍基于一些对象进行扩展函数的封装带来的便利性进行说明,毕竟基于上下文的调用扩展函数,比不断地去自己去类库中查找那个方法合适,会更高效一些。
我们常常使用到的对象,可能包括有字符串(String)、日期对象(datetiR_656_11845@e)、列表集合(List/IEnumerablE)、常规对象Object、UI控件(如普通的Control对象处理,其他常规控件对象等),一般来说,这些常规类型的对象我们会在代码中应用很多,对于上下文的一些快速的调用可以快速减少我们翻查代码的时间,随着时间的累积,我们会使用的更加快捷和熟悉。
字符串可能是我们日常使用C#代码,操作最多的一个.net 基础类型了,一般字符串涉及到格式判断、格式转换、内容截取、正则表达式处理、编码处理等等,几乎是五花八门。
我们一般为了方便,都会给字符串类型编写一些扩展函数,以便于常规的处理。编写扩展字符串函数的处理也很简单,创建一个静态类,并在方法中第一个方法参数指定为this即可,如下所示。
我们可以编写很多用于常规处理的字符串函数,如格式转换和内容提取,以及正则表达式等。
字符串的格式转换是非常常见的处理,如对UrlEncode/HtmlEncode/Base64转换/byte[]字节转换等等,一般我们可以把常见的放在一个静态类里面,这样便于维护。
日期类型也是我们常见的,因此可以针对日期的格式转换、日期的处理等内容整合到一个扩展函数里面,便于快速的调用和维护。
针对常规的C#对象的扩展,我们编写、收集整理了不少扩展函数,主要就是提高开发的便利性。如下截图所示。
有时候,我们在开发常规Windows项目的时候,需要用到对常规控件的赋值、数据绑定等常规处理,我们也可以通过编写扩展函数,并重载不同的方法,来更加的方便调用扩展函数的代码处理。
而对于第三方的UI控件,如DevExpress的一些控件,如果处理的时候,也进行一些控制封装,会使得调用代码更加简洁的,如下是针对一些常规DevExpress控件的扩展函数封装。
这些不同类型的控件扩展函数的封装,使得我们操作对象的处理更加便捷,如字符串转换为int类型的时候,我们直接调用扩展函数转换即可。
///@H_696_63@ <sumMary>@H_696_63@
///@H_696_63@ 获取表的所有记录数量
@H_696_63@///@H_696_63@ </sumMary>@H_696_63@
///@H_696_63@ <returns></returns>@H_696_63@
public@H_696_63@ int@H_696_63@ GetRecordCount()
{
@H_696_63@var@H_696_63@ action = "@H_696_63@GetRecordCount@H_696_63@"@H_696_63@;
@H_696_63@String@H_696_63@ url = GetTokenUrl(action);
@H_696_63@return@H_696_63@ JsonHelper<DataTable>.ConvertString(url).ToInt32();
}@H_696_63@
还有我们在开发界面的时候,更加方便调用来进行数据处理。如常规的对TreeList控件的处理代码,需要添加列和属性的时候,代码如下。
///@H_696_63@ <sumMary>@H_696_63@
///@H_696_63@ 初始化树控件
@H_696_63@///@H_696_63@ </sumMary>@H_696_63@
private@H_696_63@ void@H_696_63@ InitTree()
{
@H_696_63@this@H_696_63@.tree.columns.Clear();//@H_696_63@添加显示列@H_696_63@
this@H_696_63@.tree.columns.Add(new@H_696_63@ TreeListcolumn { FieldName = "@H_696_63@Id@H_696_63@"@H_696_63@, Caption = "@H_696_63@Id@H_696_63@"@H_696_63@ });//@H_696_63@增加一个隐藏的字段,存储需要的ID@H_696_63@
this@H_696_63@.tree.columns.Add(new@H_696_63@ TreeListcolumn { FieldName = "@H_696_63@Name@H_696_63@"@H_696_63@, Caption = "@H_696_63@菜单名称@H_696_63@"@H_696_63@, Width = 160@H_696_63@, VisibleIndex = 0@H_696_63@ });
@H_696_63@//@H_696_63@设置树控件的层次关系及属性@H_696_63@
tree.KeyFieldName = "@H_696_63@Id@H_696_63@"@H_696_63@;
tree.ParentFieldName @H_696_63@= "@H_696_63@PID@H_696_63@"@H_696_63@;
@H_696_63@this@H_696_63@.tree.optionsBehavior.Editable = false@H_696_63@;
@H_696_63@this@H_696_63@.tree.optionsView.EnableAppearanceOddRow = true@H_696_63@;
@H_696_63@this@H_696_63@.tree.optionsView.EnableAppearanceEvenRow = true@H_696_63@;
@H_696_63@this@H_696_63@.tree.optionsDragAndDrop.DragNodesMode = DragNodesMode.None;//@H_696_63@不允许拖动@H_696_63@
而使用扩展函数的时候,可以简化它的调用方式,并比较直观的处理。
///@H_696_63@ <sumMary>@H_696_63@
///@H_696_63@ 初始化树控件
@H_696_63@///@H_696_63@ </sumMary>@H_696_63@
private@H_696_63@ void@H_696_63@ InitTree()
{
@H_696_63@this@H_696_63@.tree.columns.Clear();
@H_696_63@this@H_696_63@.tree.optionsDragAndDrop.DragNodesMode = DragNodesMode.None;//@H_696_63@不允许拖动
@H_696_63@//@H_696_63@控件扩展函数封装处理@H_696_63@
this@H_696_63@.tree.Createcolumn("@H_696_63@Name@H_696_63@"@H_696_63@, "@H_696_63@菜单名称@H_696_63@"@H_696_63@, 160@H_696_63@, true@H_696_63@);
@H_696_63@this@H_696_63@.tree.InitTree("@H_696_63@Id@H_696_63@"@H_696_63@, "@H_696_63@PID@H_696_63@"@H_696_63@, null@H_696_63@, false@H_696_63@, false@H_696_63@);
详细了解这个处理,可以参考随笔《在Winform开发框架中使用DevExpress的TreeList和TreeListLookupEdit控件》
有时候,我们还可以结合数据库处理,对扩展函数进行一定的封装处理,如下代码所示。
///@H_696_63@ <sumMary>@H_696_63@
///@H_696_63@ 绑定下拉列表控件为指定的数据字典列表
@H_696_63@///@H_696_63@ </sumMary>@H_696_63@
///@H_696_63@ <param name="combo">@H_696_63@下拉列表控件@H_696_63@</param>@H_696_63@
///@H_696_63@ <param name="DictTypename">@H_696_63@数据字典类型名称@H_696_63@</param>@H_696_63@
///@H_696_63@ <param name="DefaultValue">@H_696_63@控件默认值@H_696_63@</param>@H_696_63@
public@H_696_63@ static@H_696_63@ void@H_696_63@ BindDictItems(this@H_696_63@ ComboBoxEdit combo, String@H_696_63@ DictTypename, String@H_696_63@ DefaultValuE)
{
Dictionary@H_696_63@<String@H_696_63@, String@H_696_63@> Dict = BLLFactory<DictData>.Instance.GetDictByDictType(DictTypeName);
List@H_696_63@<CListItem> itemList = new@H_696_63@ List<CListItem>();
@H_696_63@foreach@H_696_63@ (String@H_696_63@ key in@H_696_63@ Dict.Keys)
{
itemList.Add(@H_696_63@new@H_696_63@ CListItem(key, Dict[key]));
}
BindDictItems(combo, itemList, DefaultValuE);
}@H_696_63@
用的时候,就非常简单了,如下代码是实际项目中对字典列表绑定的操作,字典数据在字典模块里面统一定义的。
///@H_696_63@ <sumMary>@H_696_63@
///@H_696_63@ 初始化数据字典
@H_696_63@///@H_696_63@ </sumMary>@H_696_63@
private@H_696_63@ void@H_696_63@ InitDictItem()
{
txTinDiagnosis.bindDictItems(@H_696_63@"@H_696_63@入院诊断@H_696_63@"@H_696_63@);
txtLeaveDiagnosis.bindDictItems(@H_696_63@"@H_696_63@最后诊断@H_696_63@"@H_696_63@);
@H_696_63@//@H_696_63@初始化代码@H_696_63@
this@H_696_63@.txtFollowType.bindDictItems("@H_696_63@随访方式@H_696_63@"@H_696_63@);
@H_696_63@this@H_696_63@.txtFollowStatus.bindDictItems("@H_696_63@随访状态@H_696_63@"@H_696_63@);
}@H_696_63@
这样就非常简化了我们对字典数据源的绑定操作了,非常方便易读,下面是其中一个功能界面的下拉列表展示。
扩展函数的功能主要即使便于我们对一些常规类型的对象进行快速的操作,因此积累丰富的扩展类库,可以提高我们的开发能力,同时也可以给我们提供很好的参考,有时候可以把一些新的内容加入到已有的扩展函数中去,随着逐渐对对象的处理函数更加熟悉,我们就会更加娴熟的使用它们。
以上是大佬教程为你收集整理的在各种开发项目中使用公用类库的扩展方法,通过上下文方式快速调用处理函数全部内容,希望文章能够帮你解决在各种开发项目中使用公用类库的扩展方法,通过上下文方式快速调用处理函数所遇到的程序开发问题。
如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。