我的目标是确保在大多数情况下通过“只读接口”使用对象,该接口是完整接口的子集。
const
对象。那么,我怎样才能在C#中实现目标?
答案 0 :(得分:4)
如果将编写操作放在接口中然后在抽象基类上显式实现,那该怎么办?它不是100%完美的解决方案(您仍然可以将对象转换为修改界面),但在大多数情况下,它会阻止任何人意外调用修改方法。
答案 1 :(得分:3)
你真的需要运算符重载吗?我们在这里讨论语法糖。此外,并非所有.NET语言都以相同的方式使用运算符重载。因此,如果使用运算符重载,则可以有效地使用特定于代码语言。
我将实现只读接口并删除运算符重载要求。
答案 2 :(得分:2)
您可以通过对象中的状态实现只读行为,并在调用修改方法时抛出异常吗?
答案 3 :(得分:1)
如果有人对我所做的事感兴趣,我最终选择了抽象类而不是接口,我确实在派生类中隐藏了该方法以获得正确的访问者:
就像在基本抽象类(readonly接口)中一样:
protected double accuracy;
public double Accuracy { get { return accuracy; } }
在派生类中:
public new double Accuracy
{
get { return accuracy; }
set { accuracy = value; }
}
当然,丑陋的“新”关键字,但在这种情况下它会为我做。