ich eine abstrakte Basisklasse mit einer abstrakten Wörterbuch Eigenschaft habe:Wie Kind-Klassen durchzusetzen, um eine Sammlung Eigenschaft zu implementieren einen bestimmten Wert enthält
public abstract class BaseClass
{
//...
public abstract Dictionary<string, object> Settings { get; set; }
//...
}
Ich mag Kind Klassen diese Eigenschaft mit einem bestimmten Schlüssel implementieren "genannt Text“(mehr Tasten kann bei Bedarf hinzugefügt werden, aber der‚Text‘Schlüssel muss vorhanden sein), zB:
public class ChildClass : BaseClass
{
//...
private Dictionary<string, object> _settings = new Dictionary<string, object>()
{
{ "Text", "SomeText" }
};
public Dictionary<string, object> Settings
{
get{ return _settings; }
set{ _settings = value; }
}
//...
}
Was ist die beste Art und Weise Kind-Klassen durchzusetzen, um nicht nur die Eigenschaft zu implementieren, sondern um sicherzustellen, dass es enthält ein Schlüssel namens "Text" mit einem zugehörigen Wert?
Der einzige Weg wäre, den Betrieb des Wörterbuchs in der Basisklasse zu kapseln. Es schreit tatsächlich nach mir, eine Settings-Klasse zu erstellen, anstatt ein Dictionary zu verwenden. Wenn Sie das Wörterbuch einfach verfügbar machen, können Sie das Hinzufügen/Entfernen von Schlüsseln nicht steuern. – itsme86
Setzen Sie 'Dictionary' nicht frei (machen Sie es zur Basisklasse privat), aber z. 'IReadonlyDictionary' und bieten eine Methode zum Bearbeiten von Wörterbuch (hinzufügen, löschen, kombinieren mit anderen, etc.). Auf diese Weise haben Sie volle Kontrolle über den Inhalt. – Sinatr