我可以使用代码契约在接口(interface)上定义只读、不变的属性吗? IE。实例化后始终产生相同值的属性?
最佳答案
首先注意 .NET 中的术语:
- 只读:您碰巧拥有的接口(interface)不能用于改变对象或集合
- 不可变的:没有什么可以改变对象或集合
现在回到你的问题。
在 .NET 代码约定中,所有属性 getter 都隐式标记为“纯”。这意味着从 getter 中读取永远不会有明显的副作用。
从严格意义上讲,如果您有一个只有只读属性的抽象接口(interface),那么整个接口(interface)都被认为是只读的。
但是,听起来您真正想要的是一种将接口(interface)标记为不可变并让底层类继承该状态的方法。不幸的是没有办法做到这一点,抽象接口(interface)只能添加功能。 Code Contracts 所能做的最好的事情就是确保正确添加了功能。
总结
不,它不支持。
关于c# - 使用代码契约来定义不可变接口(interface)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9137124/