如何在另一个域中创建一个类型的实例而不需要在硬盘上进行汇编。我的程序集需要一些预处理才能加载到内存中,并且我不能使用它们的名称来创建实例。
例如,我不能使用这个代码,因为它从硬盘加载程序集,而我的程序集不在正常模式下:
MyType t = _domain.CreateInstanceAndUnwrap("AssemblyName", myType.FullName) as MyType;
试试这个方法。。。(使用System.Linq)
public static Object GetInstanceFrom(AppDomain domain, string typeFullName)
{
Object objectInstance = null;
var myAssembly = domain.GetAssemblies().Where(w => w.GetTypes().Select(s => s.FullName.ToUpperInvariant()).Contains(typeFullName.ToUpperInvariant())).FirstOrDefault();
if (myAssembly != null)
{
var myTypeFromAssembly = myAssembly.GetTypes().Where(w => w.FullName.ToUpperInvariant() == typeFullName.ToUpperInvariant()).FirstOrDefault();
if (myTypeFromAssembly != null)
{
objectInstance = System.Activator.CreateInstance(myTypeFromAssembly);
}
}
return objectInstance;
}