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