我有一個抽象基類的抽象字典屬性,集合屬性:如何執行子類來實現包含特定值
public abstract class BaseClass
{
//...
public abstract Dictionary<string, object> Settings { get; set; }
//...
}
我想子類實現與所謂的特定鍵此屬性「文本」(多個鍵如果需要,可以添加,但‘文字’鍵必須存在),例如:
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; }
}
//...
}
什麼是強制執行的子類,不僅實現了財產,但以確保它包含的最佳方式一個名爲「文本」的關鍵值的關鍵?
唯一的方法是將字典的操作封裝在基類中。它實際上尖叫着創建一個Settings類而不是使用Dictionary。如果您只是公開字典,則無法控制添加/刪除鍵。 – itsme86
不要暴露'Dictionary'(使其對基類不公開),但例如'IReadonlyDictionary'並提供操作字典的方法(添加,刪除,與其他等結合)。這樣你就可以完全控制它的內容。 – Sinatr