WCF使用泛型方法的问题
/// <summary> /// 获取得到值以后的 泛型数组 /// </summary> /// <typeparam name="T"></typeparam> /// <param name="SQL"></param> /// <param name="list"></param> /// <returns></returns> public List<T> getModelList<T>(string SQL, List<string> list)where T:class,new() { try { List<T> Mlist = new List<T>(); IDataReader dr = getDataReader(SQL, list); while (dr.Read()) { T obj = new T(); obj = this.LoadFromReader<T>(dr); Mlist.Add(obj); } return Mlist; } catch (Exception ex) { return null; } }public IList getModelList(string type, string SQL, List<string> list){ try { IList Mlist = new List<object>(); IDataReader dr = getDataReader(SQL, list); while (dr.Read()) { object obj = this.GetType().GetMethods().First((p) => p.IsGenericMethod && p.Name == "LoadFromReader").MakeGenericMethod(Helper.types[type]).Invoke(this, new object[] { dr }); Mlist.Add(obj); } return Mlist; } catch (Exception ex) { return null; }}
[解决办法]
那个while (dr.Read())里面其实应该优化下,把那个反射放到外面后,内部调用,这样不需要重复反射,可增加效率。
[解决办法]
_genericTypes_ = new showjim.setup.cSharp.type[] { #region LOOP genericParameters new showjim.setup.cSharp.type(typeof(@genericParameterTypeName))/*NOT:isLast*/,/*NOT:isLast*/ #endregion LOOP genericParameters },
[解决办法]
看明白了,我是看到return @genericIndexName/**/.MakeGenericMethod(types).Invoke(null, parameters);
这段才看明白的,因为你的命名规则实在别扭,第一次见到用@符号开头的变量名,所以一直被我pass了。
[解决办法]