C#: 接口继承的获取器/设置器

18 浏览
0 Comments

C#: 接口继承的获取器/设置器

我有一组与特定可变对象紧密配合使用的接口。

该对象的许多用户只需要能够从对象中读取值,而且只需要几个属性。为了避免命名空间污染(更容易的智能感知)并传达使用意图,我希望有一个只以只读方式公开几个“关键”属性的小基本接口。

然而,几乎所有的实现都将支持完整的接口,包括可修改性。

不幸的是,在C#中表达这个概念时遇到了障碍:

interface IBasicProps {
   public int Priority { get; }
   public string Name {get;}
   //... 其他属性
}
interface IBasicPropsWriteable:IBasicProps  {
   public int Priority { set; } //warning CS0108: [...] hides inherited member [...]
   public string Name { set; }
   //... 其他属性
}

我当然不是打算隐藏任何成员,所以这不好!

当然,我可以很好地使用方法来解决这个问题,但哪种选择才是正确的呢?即使拆分接口除了传达意图之外没有任何用途,我还是希望将“核心”接口尽可能保持小。使用拆分接口,哪些方法不会进行任何更新就非常明显,这使得编写代码更清晰(更不用说还允许简单明了的静态单例存根,足够满足很多简单情况)。

我希望避免使用任何抽象类之类的东西;它们会使重新实现或快速的单一用途的适配器变得更加复杂和难以理解。

那么,有什么想法吗?

0