2010-02-23 14 views
23

Estoy escribiendo una clase de configuración personalizada en C# y .NET 3.5. Una de las propiedades debe ser de tipo System.Type. Cuando ejecuto el código, aparece el error mencionado en el título.No se puede encontrar un convertidor que admita conversión a/desde cadena para la propiedad de tipo 'Tipo'

[ConfigurationProperty("alertType", IsRequired = true)] 
public Type AlertType 
{ 
    get { return (Type)this["alertType"]; } 
    set { this["alertType"] = value; } 
} 

archivo La configuración es la siguiente:

<add name="Name" pollingInterval="60" alertType="Namespace.ClassName, Company.Project" /> 

.NET Framework es capaz de lanzar una cadena en System.Type, debido a que los configSections del archivo de configuración tiene un atributo type. La pregunta es cómo lo hacen.

Respuesta

60

Sé que esto es viejo, pero creo que esto es en realidad la respuesta correcta:

[TypeConverter(typeof(TypeNameConverter))] 
[ConfigurationProperty("alertType", IsRequired=true)] 
public Type AlertType 
{ 
    get { return this[ "alertType" ] as Type; } 
    set { this[ "alertType" ] = value; } 
} 

Adición de la TypeNameConverter hace que la transformación de String a Type sucede sin usar Type.GetType().

+0

Sí, la solución aceptada no funcionó para mí por alguna razón, mientras que esto lo hizo. –

5

creo que estás buscando Type.GetType Method (String)

+0

A veces tratamos de mirar demasiado y la respuesta está justo en frente de nosotros :) –

4

Usted puede intentar usar la clase TypeNameConverter. Tiene dos métodos que puede estar interesado en:

ConvertToString y ConvertFromString

Cuestiones relacionadas