Ist es möglich, unveränderliche Typen als Konfigurationseigenschaften mit der Konfigurations-API von .NET zu verwenden?Unveränderliche Typen als Konfigurationseigenschaften
Lassen Sie sich sagen, ich habe einen unveränderlichen Typen namens MyClass:
public class ImmutableClass
{
private readonly int value;
public ImmutableClass(int value)
{
this.value = value;
}
public int Value
{
get { return this.value; }
}
}
Ich mag diese Art als Konfigurationseigenschaft in einem Configuration verwenden:
public class MyConfigurationSection : ConfigurationSection
{
[ConfigurationProperty("foo")]
public ImmutableClass Foo
{
get { return (ImmutableClass)base["foo"]; }
set { base["foo"] = value; }
}
}
Wenn ich das tue, kann ich serialisieren und deserialisieren Sie MyConfigurationSection nicht, da diese Ausnahme ausgelöst wird:
System.Configurati on.ConfigurationErrorsException: Der Wert der Eigenschaft 'criteria' kann nicht in string konvertiert werden. Der Fehler lautet: Es konnte kein Konverter gefunden werden, der die Konvertierung in/aus der Zeichenfolge für die Eigenschaft 'Kriterium' vom Typ 'FindCriterion' unterstützt.
Wenn ich ImmutableClass von Configuration ableiten, bekomme ich diese Ausnahme, wenn ich versuche, den Konfigurationsabschnitt zu serialisieren und deserialisieren:
System.Reflection.TargetInvocationException: Ausnahme wurde durch das Ziel für einen Aufruf ausgelöst worden . ---> System.Reflection.TargetInvocationException: Vom Ziel eines Aufrufs wurde eine Ausnahme ausgelöst. ---> System.MissingMethodException: Für dieses Objekt ist kein parameterloser Konstruktor definiert.
Ich habe die volle Kontrolle über ImmutableClass, so dass ich implementieren kann, welche Schnittstelle benötigt wird.
Gibt es eine Möglichkeit, die ich in die Konfigurations-API einhängen kann, so dass ImmutableClass auf diese Weise verwendet werden kann?
+1. Danke, das hat gut funktioniert. Ich stimme zu, dass es in den meisten Fällen einfacher ist, mit dem Fluss zu gehen, und das ist auch, was ich normalerweise tue, aber das war ein spezieller Fall ... –
Gut zu wissen ... Ich experimentiere tatsächlich mit unveränderlichen Typen und XAML Serialisierung. Ich hoffe, dass Typkonverter auch für mich arbeiten werden! – Will