C#中泛型方法结合反射
2018-01-16 22:47
246 查看
反射是一种动态加载程序集中所定义类型的过程,当然也包括它自身所在的程序集。这里继续沿用上篇文章的例子,总结在泛型方法中结合反射思想,从而优化代码。
上篇文章处理了通过返回的中文枚举结果,翻译为对应中文的方式,从而便于最后展示为英文。由于只有一个后台,而该后台又是中文,客户端又是英文,所以这里在提交之前,还需要将对象中的英文字段,翻译为中文之后,通过调用后台接口入库,否则校验通不过调用将失败。
这里需要翻译为中文的字段,都是专有特殊名词,但存在有些类中对该字段定义的名称不一致。例如某类中corp代表公司名称,在另一个类中com代表公司名称,考虑到后台已使用一段时间,不能牵一发而动全身。而其结构和意义一致,因而用动态处理属性来解决。加上跟上一篇中的情况类似,这里要转换的是不同实体类中该属性,所以也用到了泛型,于是,便用到了泛型结合反射。大致如下:
调用方式就变成了类似如下:
上篇文章处理了通过返回的中文枚举结果,翻译为对应中文的方式,从而便于最后展示为英文。由于只有一个后台,而该后台又是中文,客户端又是英文,所以这里在提交之前,还需要将对象中的英文字段,翻译为中文之后,通过调用后台接口入库,否则校验通不过调用将失败。
这里需要翻译为中文的字段,都是专有特殊名词,但存在有些类中对该字段定义的名称不一致。例如某类中corp代表公司名称,在另一个类中com代表公司名称,考虑到后台已使用一段时间,不能牵一发而动全身。而其结构和意义一致,因而用动态处理属性来解决。加上跟上一篇中的情况类似,这里要转换的是不同实体类中该属性,所以也用到了泛型,于是,便用到了泛型结合反射。大致如下:
/// <summary> /// 对象属性英文转为中文 /// </summary> /// <typeparam name="T1">对象的类型</typeparam> /// <param name="value">对象参数</param> /// <param name="property">要转换的属性名称</param> /// <returns></returns> public static T1 ChineseToEnglish<T1>(T1 value, string property) { //value对象中没有该属性则直接返回 if(value.GetType().GetProperty(property).GetValue(value,null) == null) { return value; } //通过属性的中文值,设置其为英文值 switch (value.GetType().GetProperty(property).GetValue(value, null).ToString()) { case "Lenovo": value.GetType().GetProperty(property).SetValue(value, "联想", null); break; case "ALi Corporation": value.GetType().GetProperty(property).SetValue(value, "阿里扬智科技", null); break; case "Tencent": value.GetType().GetProperty(property).SetValue(value, "腾讯", null); break;; case "Trade surplus": value.GetType().GetProperty(property).SetValue(value, "贸易顺差", null); break; } return value; }
调用方式就变成了类似如下:
ChineseToEnglishConvert.ChineseToEnglish(VendorsInfo, "corp"); ChineseToEnglishConvert.ChineseToEnglish(VendorsInfo, "com");
相关文章推荐
- C#通过反射调用泛型参数方法介绍
- Java泛型接口、迭代器与反射机制结合实例,和泛型方法的使用原则
- C#反射静态方法开发实例详解(从DataReader将数据填充到数据实体泛型集合)
- c#简易反射调用泛型方法
- C#通过反射调用泛型方法
- 使用C#反射中的MakeGenericType函数,来为泛型方法和泛型类指定(泛型的)类型
- C# 使用反射动态调用泛型方法
- 使用C#反射中的MakeGenericType函数,来为泛型方法和泛型类指定(泛型的)类型
- C#中利用LINQ to XML与反射把任意类型的泛型集合转换成XML格式字符串的方法
- C# 泛型方法反射调用窗体
- C# 反射调用带参数的重载的泛型方法
- 深入理解 c# 第三章 通过反射来调用和获取泛型方法
- Unity C# 使用反射,利用字符串作为泛型参数调用泛型方法。
- C#中利用LINQ to XML与反射把任意类型的泛型集合转换成XML格式字符串的方法
- c#反射泛型方法
- 【整理】C#2.0泛型编程之泛型方法、泛型委托、泛型的属性与反射
- C# 泛型方法中反射常用方法浅析
- 黑马程序员--Java基础加强--15.利用反射操作泛型IV【通过反射Method解析泛型方法思路】【通过Method对四种Type子接口类型进行解剖】【使用递归对任意复合泛型类型进行彻底解剖】【个人
- C# 泛型编程之泛型类、泛型方法、泛型约束
- c#反射执行静态方法