我有一个抽象基类的抽象字典属性,集合属性:如何执行子类来实现包含特定值
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