C# / WPF ObservableDictionary

Leider sieht das .NET Framework bisher keine native Implementierung für ein ObservableDictionary vor. Wer trotzdem das Dictionary Pendant zur ObservableCollection haben möchte, muss dieses selbstständig implementieren. Im selben Zug sollte auch ein ObservableKeyValuePair als Pendant zum KeyValuePair implementiert werden. Hierbei sollten die beiden Events CollectionChanged sowie PropertyChanged implementiert werden. Um das Ganze zu realisieren, sollte also zunächst ein ObservableKeyValuePair implementiert werden. Hierbei gibt es verschiedene Möglichkeiten. Ich persönlich bevorzuge hierbei die Verwendung einer sealed class. Natürlich sollte es auch serialisierbar sein und möglichst in jedem Projekt verwendet werden können.  Weiterlesen

Dynamisches Mappen zwischen Typen

Manchmal kommt es vor, dass ein anderer Typ als der gegebene notwendig ist und das, obwohl dieser die gleichen Eigenschaften besitzt. Und mit diesem Satz möchte ich den nächsten Beitrag einleiten, denn diesmal geht es darum Typen zu Mappen. Dies kann erforderlich sein, wenn von einem SOAP-Service Datentypen vorgegeben werden, diese aber in eigene verpackt werden müssen, um diese mit speziellen Eigenschaften zu versehen und anschließend in der Oberfläche, im ViewModel oder im Model verwenden zu können. Im Prinzip bietet C# seit Version 2.0 dafür schon etwas passendes an, nämlich die generics. Aber um den Blogbeitrag sinnvoller zu gestalten, benötigen wir noch etwas – ein eigenes Attribut. Beginnen wir also mit diesem.

[AttributeUsage(AttributeTargets.Property, AllowMultiple = true)]
public class IgnoreOnMapAttribute : Attribute 
{ }

Relativ simpel gehalten, soll uns dieses Attribut lediglich die Möglichkeit schaffen bestimmte Eigenschaften beim Mapping zu überspringen. Es muss lediglich existieren.  Weiterlesen