2010-02-23 9 views
23

Sto scrivendo una classe di configurazione personalizzata in C# e .NET 3.5. Una delle proprietà dovrebbe essere di tipo System.Type. Quando eseguo il codice ottengo l'errore menzionato nel titolo.Impossibile trovare un convertitore che supporti la conversione in/da stringa per la proprietà di tipo 'Tipo'

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

Il file di configurazione è simile al seguente:

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

.NET framework è in grado di lanciare una stringa in System.Type, perché i configSections del file di configurazione ha un attributo type. La domanda è come lo fanno.

risposta

60

So che questo è vecchio, ma penso che questo è in realtà la risposta corretta:

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

Aggiunta del TypeNameConverter rende la trasformazione da stringa a tipo si verifica senza utilizzare Type.GetType().

+0

Sì, la soluzione accettata non ha funzionato per me per qualche motivo, mentre questo ha fatto. –

5

Penso che tu sia alla ricerca di Type.GetType Method (String)

+0

A volte cerchiamo di sembrare troppo duro e la risposta è proprio di fronte a noi :) –

4

Puoi provare a utilizzare la classe TypeNameConverter. Ha due metodi si può essere interessati a:

ConvertToString e ConvertFromString

Problemi correlati