【发布时间】:2011-12-15 01:15:41
【问题描述】:
谁能帮我看看在接口或抽象类上包含属性是否是最佳实践?
我想一个接口应该只有方法签名?
【问题讨论】:
-
怎么是骗子?正如凯尔在下面指出的那样,接口和抽象类都可以具有属性,因此没有“vs”。在这里。
谁能帮我看看在接口或抽象类上包含属性是否是最佳实践?
我想一个接口应该只有方法签名?
【问题讨论】:
我认为没有最佳实践。
接口上允许使用属性(实际上是方法)。除此之外的任何内容都只是一种意见。这包括我关于任何更多的观点的观点。
【讨论】:
在接口中拥有属性是完全可以接受的。我一直这样做。
【讨论】:
属性是方法的语法糖。考虑一下:
我有一个财产:
String PropertyA { get; set; }
在运行时会变成这样:
String get_PropertyA() { ... }
void set_PropertyA(String value) { ... }
请注意,“...”表示将由代码生成器放置在那里的代码。实际上,我要说的是,属性实际上并不存在于 C# 之外,因为它们使用我的示例中指示的对流编译为方法。要确认我在说什么,您可以使用反射并查看反射代码的样子。
将属性放在接口上可能是不好的做法,如果它们在实现中做了一些不重要的事情。例如,如果我想设置一个变量并更新其他变量,或者设置一个属性可能会因为内部条件而拒绝我的属性分配,那么不应使用一个属性。我认为这是适用于接口之外的一般规则。
【讨论】:
界面中的属性很好
见:
http://msdn.microsoft.com/en-us/library/ms173156.aspx
接口由方法、属性、事件、索引器或任何 这四种成员类型的组合。接口不能包含 常量、字段、运算符、实例构造函数、析构函数或 类型。它不能包含静态成员。接口成员是 自动公开,并且它们不能包含任何访问修饰符。
【讨论】:
在接口或抽象类中包含属性是完全有效的。
【讨论】: