所以我有这个自定义对象/静态函数,它接受一个Type来调用:
MyObject<MyType>.MyFunction();
MyObject定义如下:
public abstract class MyObject <type> { ... }
如何调用它?我需要调用的原因是因为MyType是动态的,我不能这样做:
Type t = this.GetType();
MyObject<t>.MyFunction();
答案 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