【C#编程最佳实践 三】接口使用实践
来源:互联网 发布:java用float判断大小 编辑:程序博客网 时间:2024/06/02 03:38
目前使用到的接口使用方法大概就以下这两种,之后在持续更新,第一种就是使用工厂,第二种就是字典类。接下来详细介绍这两种方法,用好了就可以说把多态玩儿溜了。
工厂类的使用实践
创建工厂类
namespace Factory{ internal class ConverterFactory : FactoryBase<ConverterFactory, IConditionKeyBuilder>, IFactory<IConditionKeyBuilder> { public IConditionKeyBuilder NewObject(string className) { var result = ReflectionHelper.CreateInstance<IConditionKeyBuilder>("程序集", "命名空间." + className); if (result == null) { throw new ConfigException($"{className}反射失败"); } return result; } }}
调用工厂类
调用的时候 newrow.ConditionCode = ConverterFactory.Instance.CreateObject("FieldCombinationConditionKeyBuilder").GetKeyMethod(newrow, tableconfig.Name);
字典类和接口组合的使用实践
特征码的接口和实现类
在使用的时候就可以直接依据传入的字符串来判断
//=====================================================特征码设置(依据需求判断使用哪个方法)============================================================= //使用接口和实现类来设置特征码 public static readonly Dictionary<string, ConditionKeyBuilder> conditionKeyBuilder = new Dictionary<string, ConditionKeyBuilder>() { //不同方法的解决接口 { "FieldCombinationConditionKeyBuilder",new FieldCombinationConditionKeyBuilder(MetaDataBaseName) }, { "ValueMappingConditionKeyBuilder",new ValueMappingConditionKeyBuilder() } }; /// <summary> /// 根据相应的方法名获取相应的获取特征码的方式 /// </summary> /// <param name="method"></param> /// <returns></returns> private ConditionKeyBuilder GetConditionKey(string builderName) { if (conditionKeyBuilder.ContainsKey(builderName)) { return conditionKeyBuilder[builderName]; } return null; } #region 检测该库所有表的数据迁移
比较规则的接口和实现类
在使用的时候就可以直接依据传入的字符串来判断
#region 白名单设置,获取对应方法 //===========================================白名单设置============================ public static readonly Dictionary<string, MethodProvider> methodProvider = new Dictionary<string, MethodProvider>() { //不同方法的解决接口 { "Equal",new EqualMethodProvider() }, { "Mapping",new MappingMethodProvider() }, { "TenanatReplace",new TenanatReplaceMethodProvider() } }; /// <summary> /// 根据相应的方法名获取相应的算法处理方法 /// </summary> /// <param name="method"></param> /// <returns></returns> private MethodProvider GetMethodProvider(string method) { if (methodProvider.ContainsKey(method)) { return methodProvider[method]; } return null; } #endregion 白名单设置,获取对应方法
字典类获取列名
还可以通过字典类,将对应的列序号和列明封装到字典类,这样之后对每行数据处理的时候可以随时获得当前处理字段的字段名,例如
//使用字典类获取一个列名和列次序的映射 var dt = new Dictionary<int, String>(); for (var j = 0; j < sourceTable.Columns.Count; j++) { var col = sourceTable.Columns[j]; dt.Add(j, col.ColumnName); }
阅读全文
0 0
- 【C#编程最佳实践 三】接口使用实践
- 【C#编程最佳实践 一】单元测试实践
- 《DOM编程艺术》三、最佳实践
- 【C#编程最佳实践 二】git操作实践
- 【C#编程最佳实践 六】数据库操作相关实践
- 【C#编程最佳实践 七】代码书写规范实践
- 【C#编程最佳实践 五】项目与代码流程实践
- 【C#编程最佳实践 八】MVC流程实践
- 接口测试最佳实践
- C 编程最佳实践
- C 编程最佳实践
- C 编程最佳实践
- C 编程最佳实践
- C 编程最佳实践
- C 编程最佳实践
- C编程最佳实践
- C 编程最佳实践
- C 编程最佳实践
- 6轴机器人运动学正解,逆解2
- echarts柱状图、折线图求合,通过formatter回调函数自定义tooltip展示格式
- 导出数据库表结构
- 稀疏重建-->密集重建的过渡文件
- 【iOS】神坑!iOS8在xcode9.2图片显示异常
- 【C#编程最佳实践 三】接口使用实践
- Linux基本命令
- SQLyog注册码
- 针对js事件的实践与练习(二)
- numpy数组运算
- Material Design控件使用总结之RecyclerView(一)基本使用
- Android studio启动DDMS失败
- 分布式、服务化的ERP系统架构设计
- 一个架构师谈什么是架构以及怎么成为一个架构师