我想寫個(gè)方法,傳入類就可以從xml中得到相應(yīng)的值,xml讀取那塊我寫兩個(gè)工具類,負(fù)責(zé)讀取。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 { //這里我希望遞歸調(diào)用SetFiledsValue<T>(XmlMachine xmlMachine) 這個(gè)方法,關(guān)鍵這個(gè)<T> 的T怎么傳呀,忘大神們指教 } } return result; }
1 回答

慕后森
TA貢獻(xiàn)1802條經(jīng)驗(yàn) 獲得超5個(gè)贊
有兩種方法可以處理:
1. 窮盡你可的類型;
2. 要不然從網(wǎng)上找一個(gè)“非泛型調(diào)用泛型方法”的例子,包裝一下調(diào)用。
或者你干脆將方法 private T SetFiledsValue<T>(XmlMachine xmlMachine) where T : new()
轉(zhuǎn)換為 private object SetFiledsValue(Type resultType, XmlMachine xmlMachine);
然后實(shí)例化對象的時(shí)候用 CreateInstance方法。
我覺得想用幾行代碼做成一個(gè)通用的方法估計(jì)會很難。
然后提兩點(diǎn)建議:
1. SetFiledsValue似乎改成SetFieldsValue更合規(guī);
2. 如果需要多次調(diào)用 SetFiledsValue,建議 type.GetFields() 緩存一下。
- 1 回答
- 0 關(guān)注
- 505 瀏覽
添加回答
舉報(bào)
0/150
提交
取消