2010-02-23 6 views
23

Ich schreibe eine benutzerdefinierte Konfigurationsklasse in C# und .NET 3.5. Eine der Eigenschaften sollte vom Typ System.Type sein. Wenn ich den Code ausführe, bekomme ich den Fehler im Titel erwähnt.Konnte keinen Konverter finden, der die Konvertierung in/aus String für die Eigenschaft 'Type' unterstützt.

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

Die Konfigurationsdatei sieht wie folgt aus:

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

Das .net Framework der Lage ist, eine Zeichenkette in System.Type zu werfen, weil die configSections der Konfigurationsdatei ein type-Attribut hat. Die Frage ist, wie machen sie das?

Antwort

60

Ich weiß, das ist alt, aber ich denke, das ist eigentlich die richtige Antwort ist:

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

die TypeNameConverter Hinzufügen macht die Transformation von String zu Type geschieht ohne Verwendung von Type.GetType().

+0

Ja, die akzeptierte Lösung funktionierte für mich aus irgendeinem Grund nicht, während dies tat. –

5

Ich glaube, du bist für Type.GetType Method (String)

+0

Manchmal versuchen wir, zu hart zu schauen und die Antwort ist direkt vor uns :) –

4

suchen Sie können versuchen, die TypeNameConverter Klasse. Es verfügt über zwei Methoden, die Sie interessieren könnten:

ConvertToString und ConvertFromString

Verwandte Themen