【发布时间】:2015-03-16 08:45:12
【问题描述】:
我有以下源代码:
Type classType = x;
Type genericType = y;
var var1 = 1;
var var2 = 2;
object obj = Activator.CreateInstance(classType<genericType>);
obj.MyMethod(var1, var2);
当然没用。我必须在我的 中使用一个类,而不是类型的对象。我的另一个问题是,我不能在没有强制转换的情况下调用 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); 但我这里需要泛型类型。
【问题讨论】:
-
目前还不清楚您实际上想要做什么。这似乎是一个可以通过不同方法解决的问题。
-
如果您在创建泛型类的实例时遇到问题,您可能会对this answer 感兴趣。