C#:接口继承getters/setters

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

对象的许多用户只需要能够从对象读取值,然后只需要几个属性。为了避免命名空间污染(更简单的intellisense)和跨越使用意图,我想有一个小的基本接口,只公开一些“关键”属性以只读方式。

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

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

interface IBasicProps {
   public int Priority { get; }
   public string Name {get;}
   //... whatever
}

interface IBasicPropsWriteable:IBasicProps  {
   public int Priority { set; } //warning CS0108: [...] hides inherited member [...]
   public string Name { set; }
   //... whatever
}

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

当然,我可以解决这个使用方法只是罚款,但什么是正确的选择?我想保持“核心”接口尽可能小,即使分裂接口没有目的,而不是沟通意图。使用分裂接口,只是很明显哪些方法不会进行任何更新,它使得代码更清晰(更不用说也允许漂亮的简单的静态单例子存根,足以满足几个简单的情况) 。

我想避免任何抽象类等;它们使得重新实现或快速单用垫片更加复杂和难以克制。

那么,想法?

方法隐藏在一个接口不是几乎像球衣;我会去的像:

interface IBasicProps {
   int Priority { get; }
   string Name {get;}
   //... whatever
}

interface IBasicPropsWriteable:IBasicProps  {
   new int Priority { get; set; }
   new string Name { get; set; }
   //... whatever
}
class Foo : IBasicPropsWriteable {
    public int Priority {get;set;}
    public string Name {get;set;}
/* optional
    int IBasicProps.Priority {get {return Priority;}}
    string IBasicProps.Name {get {return Name;}}
*/
}
http://stackoverflow.com/questions/1791359/c-interface-inheritance-getters-setters

本站文章除注明转载外,均为本站原创或编译
转载请明显位置注明出处:C#:接口继承getters/setters