2

我想System.Drawing.Point在运行时创建一个类型的对象,我尝试使用下面的代码:

String typename = "System.Drawing.Point";
Type tp = Type.GetType(typename);
Object instance = Activator.CreateInstance(tp);

但我总是得到tp == null。但是,例如,如果我使用System.Double一切都可以。

4

2 回答 2

4

Type.GetType 将尝试从 mscorlib 加载类型。使用类型的程序集限定名称。

String typename = "System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a";

Type tp = Type.GetType(typename);
于 2013-07-24T11:52:10.130 回答
1

您需要在您的类型名称中限定程序集,所以

String typename = "System.Drawing.Point, System.Drawing";

将工作(如果 System.Drawing.dll 被引用和加载)。

类型名称

类型:System.String

要获取的类型的程序集限定名称。[..] 如果类型在当前执行的程序集中或在 Mscorlib.dll 中,则提供由其命名空间限定的类型名称就足够了。

于 2013-07-24T11:51:12.303 回答