繁体   English   中英

Assembly.CreateInstance和Activator.CreateInstance之间的区别?

[英]Difference between Assembly.CreateInstance and Activator.CreateInstance?

这些电话有什么区别?

没有。 Assembly.CreateInstance实际上调用了Activator.CreateInstance。

在Assembly.CreateInstance上使用Reflector:

public object CreateInstance(string typeName, bool ignoreCase, BindingFlags bindingAttr, Binder binder, object[] args, CultureInfo culture, object[] activationAttributes)
{
    Type type = this.GetType(typeName, false, ignoreCase);
    if (type == null)
    {
        return null;
    }
    return Activator.CreateInstance(type, bindingAttr, binder, args, culture, activationAttributes);
}

Assembly.CreateInstance在特定程序集中查找类型,而Activator.CreateInstance可以创建任何类型的对象。

Activator.CreateInstance具有Assembly没有的重载; 例如,它可以使用远程处理在其他应用程序域或其他服务器上创建对象。

您可以使用类型的名称和程序集的名称而不是Type对象来提供Activator.CreateInstance 这意味着它将尝试将程序集加载到当前AppDomain(如果当前未加载),然后尝试加载该类型。 我相信如果没有加载Assembly.CreateInstance(它调用Activator)不会尝试加载程序集。 它只是尝试获取指定类型的Type对象,如果找不到则返回null(我通过阅读代码而不是在测试之后这样说)。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM