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

Call method of generic type variable and generic class variable

我有以下源代码:

Type classType = x;
Type genericType = y;
var var1 = 1;
var var2 = 2;

object obj = Activator.CreateInstance(classType<genericType>);
obj.MyMethod(var1, var2);

当然没有用。我必须在我的 <> 中使用 Class 而不是类型的对象。我的另一个问题是,我不能在没有转换的情况下调用 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);

但我现在只是在运行时使用我的类型 classType 和我的类型 genericType。我可以投这样的东西: ((Base)object).MyMethod(10); 但是我在这里需要通用类型。

你必须使用MakeGenericType

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

obj.MyMethod(var1, var2);

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