Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/322.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 在另一个没有程序集名称的域中创建类型的实例_C#_Reflection - Fatal编程技术网

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;
    }