【发布时间】:2011-02-02 03:08:53
【问题描述】:
我刚刚开始与 FxCop 合作,看看我的代码在违反其全套规则时表现如何。我从“打破”规则开始,我遇到的第一个是 CA2227,它基本上说你应该将集合属性的设置器设为只读,这样你就不会意外更改集合数据。
由于我使用的是 MVVM,我发现使用带有 get/set 属性的 ObservableCollection 非常方便,因为它使我的 GUI 更新在代码隐藏中变得简单而简洁。不过,我也可以看到 FxCop 抱怨的内容。
我刚刚遇到的另一种情况是使用 WF,我需要在创建工作流时设置参数,我不想为了避免这种特殊情况而不得不围绕我正在使用的集合编写一个包装类错误信息。
例如,以下是我将属性设置为只读时收到的示例运行时错误消息:
The activity 'MyWorkflow' has no public writable property named 'MyCollectionOfStuff'
您对此有何看法?我可以忽略这个特定的错误,但这可能不好,因为我可以想象在 MVVM 不适用的代码的其他地方(例如,仅模型代码)中违反此规则。我认为我还可以将它从一个属性更改为一个类,其中包含操作基础集合的方法,然后从 setter 方法发出必要的通知。我有点困惑……有人能解释一下吗?
【问题讨论】:
标签: c# data-binding mvvm fxcop observablecollection