1
に変数の型を渡す私は、一般的な方法があります。 今、私はそれを設定して自動的にクラスを埋める作るしようとしている:ジェネリックメソッド
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
自体SetValue()
がすでにパラメータとしてObject
を期待しているので、あなたは、単にSetMethod()
のジェネリックパラメータとしてobject
を渡すことができ
型はコンパイル時に知られている必要がある、見http://stackoverflow.com/questions/2604743/setting-generic-type-at-runtime – PaulF
は 'として、一般的なパラメータとして' object'を渡しますSetValue'はすでに 'Object'を予期しています – haim770
あなたのオプションは、haim770が示唆するか、あるいは反射を使って' GetSetting 'を呼び出すかのいずれかです。しかし、これをたくさんしている場合は、設定クラスをJSON/XML /バイナリにシリアル化して後で逆シリアル化するほうが良いかもしれません。 –
DavidG