首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Assembly.CreateInstance和Activator.CreateInstance的区别是什么?

Assembly.CreateInstance和Activator.CreateInstance的区别是什么?
EN

Stack Overflow用户
提问于 2009-12-02 23:26:57
回答 3查看 12.7K关注 0票数 19

这些调用之间的区别是什么?

EN

回答 3

Stack Overflow用户

发布于 2009-12-02 23:29:04

没有。Assembly.CreateInstance实际上在幕后调用Activator.CreateInstance。

在Assembly.CreateInstance上使用反射器:

代码语言:javascript
运行
复制
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);
}
票数 18
EN

Stack Overflow用户

发布于 2009-12-02 23:29:44

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

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

票数 16
EN

Stack Overflow用户

发布于 2009-12-03 00:00:15

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

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/1833615

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档