所以我有这个自定义对象/静态函数,它需要一个类型来调用:
MyObject<MyType>.MyFunction();
MyObject 是这样定义的:
public abstract class MyObject <type> { ... }
我该如何调用它?我需要调用的原因是因为 MyType 是动态的,我不能这样做:
Type t = this.GetType();
MyObject<t>.MyFunction();
所以我有这个自定义对象/静态函数,它需要一个类型来调用:
MyObject<MyType>.MyFunction();
MyObject 是这样定义的:
public abstract class MyObject <type> { ... }
我该如何调用它?我需要调用的原因是因为 MyType 是动态的,我不能这样做:
Type t = this.GetType();
MyObject<t>.MyFunction();
您需要使用反射来实例化类 - 然后更多的反射来调用该方法:
Type typeDefinition = typeof(MyObject<>);
Type constructedType = typeDefinition.MakeGenericType(t);
MethodInfo method = constructedType.GetMethod("MyFunction");
method.Invoke(null, null);
这很不愉快,当然。您肯定需要它成为泛型类中的方法吗?
typeof(MyObject<>).MakeGenericType(this.GetType())
.GetMethod("MyFunction", BindingFlags.Static | BindingFlags.Public)
.Invoke(null, null);
只能通过使用反射。
typeof(MyObject<>).MakeGenericType(t).GetMethod("MyFunction", BindingFlags.Static).Invoke(null, new object[0]);
你知道关键字 typeof 吗?
这应该可以正常工作:msdn.microsoft.com/en-us/library/twcad0zb (v=vs.80).aspx