我正在尝试创建一个类,Activator.CreateInstance(assemblyName, typeName)但我收到了错误
mscorlib.dll中发生了未处理的"System.TypeLoadException"类型异常
附加信息:无法从程序集"AssessmentDeepCompare,Version = 1.0.0.0,Culture = neutral,PublicKeyToken = null"加载类型"Question".
在这个例子中(生成上面的错误)我试图实例化Question从哪个继承IAssessmentObject并在同一个程序集中.
public IAssessmentObject getInstance(string typeName) {
string assemblyName = Assembly.GetAssembly(typeof (IAssessmentObject)).ToString();
return (IAssessmentObject)Activator.CreateInstance(assemblyName, typeName);
}
Run Code Online (Sandbox Code Playgroud)
当您只有没有命名空间或程序集的Type名称时,实例化对象的正确方法是什么?
听起来你确实有程序集 - 只是没有命名空间限定的类型名称.
您可以获取程序集中的所有类型,并从中获取类型:
var type = typeof(IAssessmentObject).Assembly
.GetTypes()
.Single(t => t.Name == "Question");
var instance = (IAssessmentObject) Activator.CreateInstance(type);
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1829 次 |
| 最近记录: |