将变量类型传递给泛型方法

时间:2016-11-28 17:07:02

标签: c# generics reflection

我有一个通用的方法:

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'是一个变量,但用作类型

我实际上是f FieldType而不是f本身

1 个答案:

答案 0 :(得分:1)

由于SetValue()已经预期Object作为参数,因此您只需将object作为SetMethod()的通用参数传递:

f.SetValue(m, User.GetSetting<object>(f.Name), null);