在没有程序集名称的另一个域中创建类型的实例



如何在另一个域中创建一个类型的实例而不需要在硬盘上进行汇编。我的程序集需要一些预处理才能加载到内存中,并且我不能使用它们的名称来创建实例。

例如,我不能使用这个代码,因为它从硬盘加载程序集,而我的程序集不在正常模式下:

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

相关内容

  • 没有找到相关文章