1
我有一個通用的方法:傳遞變量類型,泛型方法
public static T GetSetting<T>(string Key){
....
}
它返回從數據庫中的設定值。 現在我試圖使其與設置自動填充類:
public static T GetAllSettings<T>(this T m)
{
FieldInfo[] fields = typeof(T).GetFields(BindingFlags.Public);
foreach(FieldInfo f in fields)
f.SetValue(m, User.GetSetting<f.FieldType>(f.Name), null);
// ~ <=Error in here
}
但我得到的錯誤:
'f' is a variable but is used like a type
嗯,我居然得到f
的FieldType而不是f
本身
的類型需要在編譯時是已知的,見http://stackoverflow.com/questions/2604743/setting-generic-type-at-runtime – PaulF
通'object'作爲泛型參數,如' SetValue'已經期望一個'Object' – haim770
你的選擇要麼像haim770建議的那樣做,要麼使用反射來調用'GetSetting'。但是,如果你這樣做了很多,你可能會更好地將你的設置類序列化爲JSON/XML/binary並在稍後將其反序列化。 –
DavidG