我想写个方法,传入类就可以从xml中得到相应的值,xml读取那块我写两个工具类,负责读取。private T SetFiledsValue<T>(XmlMachine xmlMachine) where T : new() { T result = new T(); Type type = typeof(T); FieldInfo[] fields = type.GetFields(); foreach (FieldInfo field in fields) { if (field.GetType() == typeof(string)) { field.SetValue(result, xmlMachine.Read(field.Name)); } else if (field.GetType() == typeof(List<string>)) { field.SetValue(result, xmlMachine.Reads(field.Name)); } else { //这里我希望递归调用SetFiledsValue<T>(XmlMachine xmlMachine) 这个方法,关键这个<T> 的T怎么传呀,忘大神们指教 } } return result; }
1 回答
慕后森
TA贡献1802条经验 获得超5个赞
有两种方法可以处理:
1. 穷尽你可的类型;
2. 要不然从网上找一个“非泛型调用泛型方法”的例子,包装一下调用。
或者你干脆将方法 private T SetFiledsValue<T>(XmlMachine xmlMachine) where T : new()
转换为 private object SetFiledsValue(Type resultType, XmlMachine xmlMachine);
然后实例化对象的时候用 CreateInstance方法。
我觉得想用几行代码做成一个通用的方法估计会很难。
然后提两点建议:
1. SetFiledsValue似乎改成SetFieldsValue更合规;
2. 如果需要多次调用 SetFiledsValue,建议 type.GetFields() 缓存一下。
- 1 回答
- 0 关注
- 479 浏览
添加回答
举报
0/150
提交
取消