1
5
创建只公开get访问器的接口ireadonlyperson。让人实现IReadonlyperson。将对person的引用存储在控制器中。只为其他客户端提供只读版本。 这可以防止错误,但不会像大多数oo特性那样出现欺诈。如果客户机碰巧知道(或怀疑)ireadonlyperson是由person实现的,则可以运行时强制转换为person。 根据评论更新: 只读接口也可以像任何其他对象一样公开事件委托。通常在c_中使用的习惯用法并不能防止客户机弄乱侦听器列表,但是约定只是添加侦听器,所以这应该足够了。在任何具有状态更改副作用的set访问器或函数中,只需调用带有空(无侦听器)保护的事件委托。 |
2
1
我喜欢有一个只读接口。然后builder/controller/whatever可以直接引用该对象,但是当您将该对象公开给外部时,只显示接口。 |
3
1
使用接口
|
4
1
我想
并显式实现此接口:
然后在生成器中执行显式接口转换以设置属性。这仍然不能保护您的实现,也不是一个好的解决方案,尽管它确实在某种程度上强调了您的意图。 在属性设置器中,必须实现事件通知。亲自解决此问题时,我不会为每个属性创建单独的事件和事件处理程序,而是创建一个propertyChanged事件,并在发生更改时在每个属性中触发它(其中事件参数将包括属性名称、旧值和新值)。 |
5
1
奇怪的是,虽然我不能更改person对象的名称,但我可以简单地抓住它的控制器并在那里更改它。这不是保护对象数据的好方法。 但是,尽管如此,还是有一个办法:
|
6
0
也许是那样的?
不是很漂亮,但我觉得很管用。或者,可以在编辑器中使用属性而不是setx方法。 |
Emopusta · 从后端到前端的图像路径不工作 2 年前 |
Asdrubal Hernandez · Linq查询特定数组索引出错 2 年前 |
Niyazi Babayev · 如何在表达式中动态应用表达式? 2 年前 |
Dansih · .Net核心自定义身份验证方案 2 年前 |
lolorekkk · 面板插入。NET WinForm 2 年前 |