如何调用类型的函数?

时间:2012-07-24 18:17:36

标签: c#

所以我有这个自定义对象/静态函数,它接受一个Type来调用:

      MyObject<MyType>.MyFunction();

MyObject定义如下:

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

如何调用它?我需要调用的原因是因为MyType是动态的,我不能这样做:

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

4 个答案:

答案 0 :(得分:4)

您需要使用反射来实例化该类 - 然后使用更多反射来调用该方法:

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

肯定是不愉快的。你肯定需要它是一个泛型类的方法吗?

答案 1 :(得分:1)

typeof(MyObject<>).MakeGenericType(this.GetType())
    .GetMethod("MyFunction", BindingFlags.Static | BindingFlags.Public)
    .Invoke(null, null);

答案 2 :(得分:1)

仅使用反射。

typeof(MyObject<>).MakeGenericType(t).GetMethod("MyFunction", BindingFlags.Static).Invoke(null, new object[0]);

答案 3 :(得分:0)

您是否知道关键字typeof?

这应该可以正常工作:msdn.microsoft.com/en-us/library/twcad0zb(v=vs.80).aspx