[英]Implement a readonly (immutable) object interface in C#
我的目标是确保在大多数情况下通过“只读接口”使用对象,该接口是完整接口的子集。
const
对象。 那么,我怎样才能在C#中实现我的目标?
如果将编写操作放在接口中然后在抽象基类上显式实现,那该怎么办? 它不是一个100%完美的解决方案(您仍然可以将对象转换为修改界面),但在大多数情况下,它会阻止任何人意外调用修改方法。
你真的需要操作员重载吗? 我们在这里讨论语法糖。 此外,并非所有.NET语言都以相同的方式使用运算符重载。 因此,如果您使用运算符重载,那么您实际上是在使用特定于代码语言的语言。
我将实现只读接口并删除运算符重载要求。
您可以通过对象中的状态实现只读行为,并在调用修改方法时抛出异常?
如果有人对我所做的事情感兴趣,我最终选择了一个抽象类而不是接口,并且我确实在派生类中隐藏了该方法以获得正确的访问者:
就像在基本抽象类(readonly接口)中一样:
protected double accuracy;
public double Accuracy { get { return accuracy; } }
在派生类中:
public new double Accuracy
{
get { return accuracy; }
set { accuracy = value; }
}
当然,丑陋的“新”关键字,但在这种情况下,它将为我做。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.