【发布时间】:2010-01-20 00:43:18
【问题描述】:
可能重复:
Can I declare a variable of Type<T> without specifying T at compile time?
目标:动态加载“MyContent”类。我有 1 个接口<T>,1 个抽象泛型class<T>。
代码:
public interface IMyObjectInterface{
}
public abstract MyAbstractObject : IMyObjectInterface{
}
public class MyObject : MyAbstractObject{
}
public interface IMyContentInterface<T> where T : MyAbstractObject
{
T MyMethod();
void MyMethod2(T);
}
public abstract MyAbstractContent<T>, IMyContentInterface<T> where T : MyAbstractObject
{
public abstract T MyMethod();
public abstract void MyMethod2(T);
}
public class MyContent : MyAbstractContent<MyObject>
{
public override MyObject MyMethod() { //do something with MyObject }
public override void MyMethod2(MyObject) { //do something with MyObject }
}
现在,我们加载:
IMyObjectInterface obj = (IMyObjectInterface)Assembly.Load("MyAssembly").CreateInstance("MyObject");
IMyContentInterface<???> content = (IMyContentInterface<???>)Assembly.Load("MyAssembly").CreateInstance("MyContent");
content.MyMethod();
如何加载???
【问题讨论】:
-
您是否阅读了其他问题的答案? stackoverflow.com/questions/2067827/…
-
@Fabio - 抱歉,我最初的答案不够清楚,但不,你不能在 C# 中做到这一点。如果您事先不知道
T,您将无法直接访问其成员,也无法创建引用T的通用变量。 -
好的,谢谢大家!
标签: .net generics assemblies