2

だから私は呼び出すためにタイプを取るこのカスタムオブジェクト/静的関数を持っています:

      MyObject<MyType>.MyFunction();

MyObject は次のように定義されています。

      public abstract class MyObject <type> { ... }

どうすれば呼び出すことができますか? 呼び出しを行う必要があるのは、MyType が動的であり、これを行うことができないためです。

     Type t = this.GetType();
     MyObject<t>.MyFunction();
4

4 に答える 4

4

リフレクションを使用してクラスをインスタンス化し、さらにリフレクションを使用してメソッドを呼び出す必要があります。

Type typeDefinition = typeof(MyObject<>);
Type constructedType = typeDefinition.MakeGenericType(t);
MethodInfo method = constructedType.GetMethod("MyFunction");
method.Invoke(null, null);

不愉快ですよね、確かに。ジェネリック クラスのメソッドである必要がありますか?

于 2012-07-24T18:20:50.623 に答える
1
typeof(MyObject<>).MakeGenericType(this.GetType())
    .GetMethod("MyFunction", BindingFlags.Static | BindingFlags.Public)
    .Invoke(null, null);
于 2012-07-24T18:21:48.047 に答える
1

リフレクションを使用することによってのみ。

typeof(MyObject<>).MakeGenericType(t).GetMethod("MyFunction", BindingFlags.Static).Invoke(null, new object[0]);
于 2012-07-24T18:23:38.343 に答える
0

キーワード typeof を知っていますか?

これは問題なく動作するはずです: msdn.microsoft.com/en-us/library/twcad0zb(v=vs.80).aspx

于 2012-07-24T18:20:37.097 に答える