2013-07-24 3 views
2

Я хочу, чтобы создать объект типа System.Drawing.Point во время выполнения, я пытался использовать код ниже:Ошибка при создании среды выполнения объекта типа System.Drawing.Point

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

Но я всегда получаю tp == null. Но, например, если я использую System.Double, все в порядке.

+2

Загружается 'System.Drawing.dll'? –

+0

Для чего это платформа? Например, Silverlight не имеет доступа к этому типу. –

+1

В любом случае, я считаю, что имя-тип должен быть сборным. –

ответ

1

Вы должны qualify the assembly in your type name, так

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

будет работать (если ссылки и загружен System.Drawing.dll).

TYPENAME

Тип: System.String

Сборку квалифицированное имя типа, чтобы получить. [..] Если тип находится в текущей исполняемой сборке или в Mscorlib.dll, достаточно указать имя типа, соответствующее его пространству имен.

4

Тип.GetType попытается загрузить тип с mscorlib. Используйте имя типа, соответствующее сборке.

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

Type tp = Type.GetType(typename); 
+0

Возможно, более осмотрительно включить информацию о версии, даже если это не является абсолютно необходимым для обеспечения работы кода. +1. =) –

+1

Где на Земле вы получили значение PublicKeyToken? Это b03f5f7f11d50a3a. –

+0

@HansPassant Не так ли ... что он говорит? –

Смежные вопросы