【发布时间】:2010-01-14 21:51:33
【问题描述】:
如何动态加载“MyContent”类?
我有 1 个interface<T>、1 个抽象泛型 class<T> 和 1 个类。检查我的代码:
public interface IMyObjectInterface{
}
public abstract MyAbstractObject : IMyObjectInterface{
}
public class MyObject : MyAbstractObject{
}
public interface IMyContentInterface<T> where T : MyAbstractObject
{
void MyMethod();
}
public abstract MyAbstractContent<T>, IMyContentInterface<T> where T : MyAbstractObject
{
public abstract void MyMethod();
}
public public class MyContent : MyAbstractContent<MyObject>
{
public override void MyMethod() { //do something }
}
我正在尝试,但显然它不起作用:
IMyObjectInterface obj = (IMyObjectInterface)Assembly.Load("MyAssembly").CreateInstance("MyObject");
IMyContentInterface<obj> content = (IMyContentInterface<obj>)Assembly.Load("MyAssembly").CreateInstance("MyContent");
content.MyMethod();
//assembly and type names are correct
如果我将 IMyContentInterface<obj> 更改为 IMyContentInterface<MyObject>,则可以:
IMyContentInterface<MyObject> content = (IMyContentInterface<MyObject>)Assembly.Load("MyAssembly").CreateInstance("MyContent");
content.MyMethod();
//assembly and type names are correct
问题是,在定义IMyContentInterface<T> 时,我不知道第二行中的对象是什么。请问,有人知道如何在 .NET Framework 4.0 中做到这一点吗?
【问题讨论】:
-
加粗你的文字会让它更烦人,更不清晰。非粗体是默认设置是有原因的。
-
此外,除非您像通用参数一样转义括号内的文本,否则它们在呈现时会被隐藏,在这种情况下,这会使您的问题非常难以理解。
标签: c# .net generics assemblies