接口应该定义属性吗?

Otá*_*cio 25 c# interface

MSDN定义的接口"仅包含方法,委托或事件的签名".但是,由于属性只不过是get和set方法的语法糖,因此它们也允许在接口中使用.我的问题是 - 在接口中定义属性是否合适或者我们是否应该坚持MSDN描述的场景?

Ree*_*sey 34

我认为属性在接口中是完全可以接受的.

正如你所说,它们实际上是一个get,set或get和set方法.框架中的许多接口定义属性,例如IAsyncResultIWebProxy.

  • @OtávioDécio:请记住界面的用途.接口定义合同.如果合同需要财产,那就没关系.您不应该以循环引用结束,因为属性不应该是直接实现接口的类型,而是基本,框架类型或类型,它们本身构成"合同"的一部分.IWebProxy(上面链接)是一个很好的例子 - 它有一个Credentials属性,它是ICredentials.这是合同的一部分,但仍然是"用户定义"类型(对于该lib). (2认同)
  • @OtávioDécio:我也没有用户定义的具体类型的问题 - 但我认为在这种情况下需要保持谨慎...... (2认同)

Sim*_*ett 15

您链接的文章还指出:

接口可以是命名空间或类的成员,并且可以包含以下成员的签名:

  • 方法
  • 属性
  • 索引
  • 活动