Не удалось найти конвертер, который поддерживает преобразование в/из строки для свойства типа "Тип"
Я пишу настраиваемый класс конфигурации в С# и .NET 3.5. Одно из свойств должно быть типа System.Type. Когда я запускаю код, я получаю ошибку, указанную в заголовке.
[ConfigurationProperty("alertType", IsRequired = true)]
public Type AlertType
{
get { return (Type)this["alertType"]; }
set { this["alertType"] = value; }
}
Файл конфигурации выглядит следующим образом:
<add name="Name" pollingInterval="60" alertType="Namespace.ClassName, Company.Project" />
Структура .net способна вставлять строку в System.Type, потому что configSections файла конфигурации имеет атрибут типа. Вопрос в том, как они это делают.
Ответы
Ответ 1
Я знаю, что это старо, но я думаю, что это на самом деле правильный ответ:
[TypeConverter(typeof(TypeNameConverter))]
[ConfigurationProperty("alertType", IsRequired=true)]
public Type AlertType
{
get { return this[ "alertType" ] as Type; }
set { this[ "alertType" ] = value; }
}
Добавление TypeNameConverter делает преобразование из String в Type происходить без использования Type.GetType().
Ответ 2
Я думаю, что вы ищете Type.GetType Method (String)
Ответ 3
Вы можете попробовать использовать класс TypeNameConverter. У вас есть два метода, которые могут вас заинтересовать:
ConvertToString
и ConvertFromString