【发布时间】:2011-09-20 03:15:43
【问题描述】:
是否有一种合理的方式来表达 .Net(Compact Framework/desktop 3.5 通用子集)中的 linear type 的概念,使得 (a) 所需的语法不会变得过于冗长、复杂,或者以其他方式痛苦并且(b)不变量可以在运行时强制执行,也可以在编译时通过代码分析进行验证(所以一个急忙的维护程序员不能只是愉快地忽略不变量)?这里的想法是避免在子系统边界处对command objects 进行防御性复制。
【问题讨论】:
-
只使用不可变对象就足够了吗?看起来简单多了?我不知道有什么可以在这里进行必要的代码分析
-
@Marc "Popsicle" 不变性(组成一个可变对象子图,然后“冻结”它以防止进一步的突变)可能有效。我可能会汇总一个 FxCop 规则来轻松验证这一点。
-
Freezable 类呢?还是不适用于您的用例?
-
@Jeffrey - 我经常使用冰棒不变性; so 比“builder”类容易得多。
-
@Mike 感谢您的提示!很有趣的课。它是 WPF 的一部分,但在 Compact Framework 中不受支持,因此我必须重新实现它,可能没有依赖属性和更改通知包,并且具有比每个线程更好的上下文区分。
标签: .net linear-types