C# 在另一个没有程序集名称的域中创建类型的实例
如何在另一个域中创建一个类型的实例,而不需要将程序集存储在硬盘上。我的程序集需要一些预处理来加载到内存中,我无法使用它们的名称来创建实例 例如,我无法使用此代码,因为它从硬盘加载程序集,并且我的程序集不处于正常模式:C# 在另一个没有程序集名称的域中创建类型的实例,c#,reflection,C#,Reflection,如何在另一个域中创建一个类型的实例,而不需要将程序集存储在硬盘上。我的程序集需要一些预处理来加载到内存中,我无法使用它们的名称来创建实例 例如,我无法使用此代码,因为它从硬盘加载程序集,并且我的程序集不处于正常模式: MyType t = _domain.CreateInstanceAndUnwrap("AssemblyName", myType.FullName) as MyType; 试试这个方法。。。(使用System.Linq) 如何在内存中创建程序集?我相信有很多方法。你能添加代码吗
MyType t = _domain.CreateInstanceAndUnwrap("AssemblyName", myType.FullName) as MyType;
试试这个方法。。。(使用System.Linq)
如何在内存中创建程序集?我相信有很多方法。你能添加代码吗?不,我解密加密的程序集并将其加载到内存中。别忘了将程序集加载到第二个appdomain 1rst:((System.appdomain)另一个域)。加载()如果我们使用从另一个域的程序集获取的类型来创建实例,我们会在该域中创建实例吗?
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;
}