调用泛型类型变量和泛型类变量的方法

时间:2015-03-16 08:45:12

标签: c# generics types

我有以下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); 但我需要这里的通用类型。

1 个答案:

答案 0 :(得分:0)

您必须使用MakeGenericType

dynamic obj = Activator.CreateInstance(classType.MakeGenericType(genericType));

obj.MyMethod(var1, var2);

并且dynamic调用MyMethod很容易(如果你必须一次调用一个方法,它甚至不会太慢)