注册 登录
  • 欢迎访问Sharezer Blog

【C#笔记】Activator.CreateInstance 方法 (Type)

C# sharezer 935次浏览 已收录 0个评论

使用指定类型的默认构造函数来创建该类型的实例。

Namespace:  System
程序集:  mscorlib(位于 mscorlib.dll 中)

C#
VB

public static Object CreateInstance(
	Type type
)

参数

type类型: System.Type
要创建的对象的类型。

返回值

类型: System.Object
对新创建对象的引用。

异常 条件
ArgumentNullException

type 为 null

ArgumentException

type 不是 RuntimeType

– 或 –

type 是一个开放式泛型类型(即,ContainsGenericParameters 属性返回 true)。

NotSupportedException

不支持创建 Void 和 RuntimeArgumentHandle 类型,也不支持创建这些类型的数组。

TargetInvocationException

被调用的构造函数引发异常。

MethodAccessException

调用方没有调用此构造函数的权限。

MemberAccessException

无法创建抽象类的实例,或者用后期绑定机制调用了该成员。

MissingMethodException

找不到匹配的公共构造函数。

COMException

type 是一个 COM 对象,但用于获取类型的类标识符无效,或被标识的类未注册。

TypeLoadException

type 不是有效的类型。

要调用的类型和构造函数必须是可访问的。如果使用 DynamicMethod 创建动态方法,则不能调用 internal 构造函数,因为该动态方法将承载在系统提供的程序集内的某个匿名模块中。

版本说明

Windows Phone

 对于不具有未定义构造函数的类型,CreateInstance 方法引发 MemberAccessException 异常而不是MissingMethodException 异常。

下面的代码示例演示如何调用 CreateInstance(Type) 方法。此代码示例摘自一个为 Activator 类提供的更大示例。

Type sbType = typeof(StringBuilder);

// Create an instance of the StringBuilder type using Activator.CreateInstance
// and the parameterless constructor.
object o = Activator.CreateInstance(sbType);

// Append a string to the StringBuilder object and display the StringBuilder,
// late bound.
sbType.InvokeMember("Append", 
   BindingFlags.Public | BindingFlags.Instance | BindingFlags.InvokeMethod, 
   Type.DefaultBinder, 
   o, new object[] {"Hello, there."});
outputBlock.Text += o.ToString() + "\n";


Sharezer , 版权所有丨如未注明 , 均为原创丨本网站采用BY-NC-SA协议进行授权 , 转载请注明【C#笔记】Activator.CreateInstance 方法 (Type)
喜欢 (0)
[liangshaoze@sina.cn]
分享 (0)
发表我的评论
取消评论

表情 贴图 加粗 删除线 居中 斜体 签到

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址