Подтвердить что ты не робот

Не удалось найти конвертер, который поддерживает преобразование в/из строки для свойства типа "Тип"

Я пишу настраиваемый класс конфигурации в С# и .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 файла конфигурации имеет атрибут типа. Вопрос в том, как они это делают.

4b9b3361

Ответ 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().

Ответ 3

Вы можете попробовать использовать класс TypeNameConverter. У вас есть два метода, которые могут вас заинтересовать:

ConvertToString и ConvertFromString