这些调用之间的区别是什么?
发布于 2009-12-02 23:29:04
没有。Assembly.CreateInstance实际上在幕后调用Activator.CreateInstance。
在Assembly.CreateInstance上使用反射器:
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);
}
发布于 2009-12-02 23:29:44
Assembly.CreateInstance
查找特定程序集中的类型,而Activator.CreateInstance
可以创建任何类型的对象。
Activator.CreateInstance
具有Assembly
没有的重载;例如,它可以在其他应用程序域中创建对象,或者使用远程在另一个服务器上创建对象。
发布于 2009-12-03 00:00:15
您可以为Activator.CreateInstance提供类型的名称和程序集的名称,而不是类型对象。这意味着它将尝试将程序集加载到当前AppDomain中(如果当前未加载),然后尝试加载该类型。我相信Assembly.CreateInstance (它会调用激活器)不会试图加载程序集,如果它没有加载的话。它只是尝试获取指定类型的Type对象,如果没有找到则返回null (我是通过阅读代码而不是在测试之后说的)。
https://stackoverflow.com/questions/1833615
复制相似问题