泛型方法的局限及解决之道
2015-11-11 18:17
197 查看
泛型的优点在于提高了函数的适应性,有利于代码复用。但是,一个支持泛型的方法里面,代表该参数类型未可知,如果要直接使用它的属性,是不行的。因此,这点是泛型的局限,使得这个泛型参数,乃至整个方法,便利性都打了折扣。
由此可知,在支持泛型的方法里面,泛型对象作为参数,主要作用在不同的方法间传来传去,像踢皮球似的。仅此而已。
难道真的不能访问泛型对象的属性吗?
“可以用反射”,西蒙说。
猴赛雷。
由此可知,在支持泛型的方法里面,泛型对象作为参数,主要作用在不同的方法间传来传去,像踢皮球似的。仅此而已。
难道真的不能访问泛型对象的属性吗?
“可以用反射”,西蒙说。
//propertyName,待访问的属性名 string getProperty<T>(IList<T> listDB, string propertyName) { string val = ""; if (listDB.Count == 0) return val; //通过反射获得泛型对象的属性数组 PropertyInfo[] propertys = listDB[0].GetType().GetProperties(); int p = 0; foreach (PropertyInfo pi in propertys) { if (pi.Name.Equals(propertyName, comparisonType: StringComparison.CurrentCultureIgnoreCase)) {//找到propertyName在T属性数组中的下标p break; } p++; } if (p == propertys.Length) { throw new Exception("对象没有相应的属性:" + propertyName); } foreach (var m in listDB) { //如此,可访问T的属性矣 val += propertys[p].GetValue(m).ToString() + ","; ... } return val; }
猴赛雷。
相关文章推荐
- Android获取设备电池信息,玩些新花样
- 三元组矩阵的乘法
- 泛型方法的局限及解决之道
- 【MDCC2015】 平台与技术-Android专场总结
- memcache 分布式,算法实现
- 谈谈那些年要把你弄疯的 bug
- 前端自动化
- MongoDB的分片(9)
- UE4 iOS Packaged Game Size
- 解决手机网站点击出现蓝色框的问题
- 在Linux(CentOS)下,AAPT解析APK指令报错少库
- iOS开发——生命周期
- Android 代码里动态设置TextView/Button等的文字颜色Seletor
- 构造函数
- TXAA
- eclipse代码自动提示,eclipse设置代码自动提示
- mysql中key 、primary key 、unique key 与index区别
- gdb命令中attach使用
- MAC自带的SVN进行升级
- 如何防止Unity3D代码被反编译?