我有以下SourceCode:
Type classType = x;
Type genericType = y;
var var1 = 1;
var var2 = 2;
object obj = Activator.CreateInstance(classType<genericType>);
obj.MyMethod(var1, var2);
当然没有用。我必须在我的&lt;&gt;中使用一个类而不是Type的对象。而我的另一个问题是,我不能在没有施法的情况下调用MyMethod。但我在运行时都有两个类型,所以应该有一个方法。
编辑:对不起这个简短的问题,我希望这就足够了。但这可能有助于理解我的问题:
class Base<T> where T : Entity
{
public T[] MyMethod(int a)
{
return ActiveRecordMediator<T>.Find(a);
}
}
class ABase : Entity
{
}
class BBase : Entity
{
}
public class AClass : Base<ABase>
{
}
public class BClass : Base<BBase>
{
}
现在我想打电话给myMethod。但我可能有这样的事情:
AClass<ABase> object = new AClass<ABase>();
object.MyMethod(10);
但我现在只是在运行时使用我的Type classType和我的Type genericType。我可以投这样的东西: ((碱)对象).MyMethod(10); 但我需要这里的通用类型。
答案 0 :(得分:0)
您必须使用MakeGenericType
dynamic obj = Activator.CreateInstance(classType.MakeGenericType(genericType));
obj.MyMethod(var1, var2);
并且dynamic
调用MyMethod
很容易(如果你必须一次调用一个方法,它甚至不会太慢)