我想System.Drawing.Point
在运行时创建一个类型的对象,我尝试使用下面的代码:
String typename = "System.Drawing.Point";
Type tp = Type.GetType(typename);
Object instance = Activator.CreateInstance(tp);
但我总是得到tp == null
。但是,例如,如果我使用System.Double
一切都可以。
Type.GetType 将尝试从 mscorlib 加载类型。使用类型的程序集限定名称。
String typename = "System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a";
Type tp = Type.GetType(typename);
您需要在您的类型名称中限定程序集,所以
String typename = "System.Drawing.Point, System.Drawing";
将工作(如果 System.Drawing.dll 被引用和加载)。
类型名称
类型:System.String
要获取的类型的程序集限定名称。[..] 如果类型在当前执行的程序集中或在 Mscorlib.dll 中,则提供由其命名空间限定的类型名称就足够了。