1

ジェネリック メソッドを呼び出そうとしていますが、Type を動的に渡す必要があります。しかし、コンパイル エラー 'CS0246: 型または名前空間名 `t' が見つかりませんでした。using ディレクティブまたはアセンブリ参照がありません。私が見落としていることを教えてください、ありがとう。

...概して...

Type t = DiscoverType(field);   // returns Type given FieldInfo via Type.GetType(string)

MethodInfo method = typeof(testClass).GetMethod("MyGenericMethod", BindingFlags.NonPublic | BindingFlags.Instance);
MethodInfo generic = method.MakeGenericMethod(typeof(t));
object[] args = {field};
generic.Invoke(this, args);

一般的な方法...

private void MyGenericMethod<T>(FieldInfo field)
{
    field.SetValue(obj, new List<T>(objList));
}
4

1 に答える 1

2

正確に何をしようとしているのかを知るのは難しいですが、次のようにコンパイラ エラーを修正できます。

MethodInfo generic = method.MakeGenericMethod(t);

演算子を使用してtypeof、型名からSystem.Typeインスタンスに移動します。あなたの場合、 System.Type必要なインスタンスが既にあるため、typeofここでは役に立ちません。

于 2012-05-23T04:33:50.587 に答える