Преобразовать строку в тип управления в C #? - PullRequest
0 голосов
/ 26 февраля 2012

У меня есть свойство строки и заполните его этим кодом:

  prop1= MyCustomPanle.GetType().ToString(); 

Я использую prop1 для хранения типов элементов управления (базовых и пользовательских элементов управления wpf). Я сохраняю это свойство и хочу создать базу типов на основе значения этого свойства. Примерно так:

  Type ControlType=Type.Gettype(prop1); 

Но это Type.GetType() работает только для переменных типа, таких как int, string и т. Д.

Как преобразовать строку в тип управления?

Ответы [ 2 ]

2 голосов
/ 26 февраля 2012

Я думаю, что вы ищете Activator.CreateInstance, это создаст объект на основе типа, известного только во время выполнения: http://msdn.microsoft.com/en-us/library/system.activator.createinstance.aspx

2 голосов
/ 26 февраля 2012

Вам необходимо полностью передать AssemblyQualifiedName в GetType().

Это можно получить, вызвав GetType().AssemblyQualifiedName в существующем экземпляре нужного вам типа.

, например

var myControlTypeName = typeof(MyControl).AssemblyQualifiedName;
var myControlType = Type.GetType(myControlTypeName);

myControlTypeName выше заканчивается как:

MyNamespace.MyControl, MyProject, версия = 1.0.0.0, культура = нейтральная, PublicKeyToken = ноль

Но если вы хотите, чтобы он был нейтральным по версии, я полагаю, его можно замкнуть ниже и по-прежнему работать:

MyNamespace.MyControl, MyProject

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...