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 回答