0

我正在 asp.net 中实现 MVP 模式,并且对网络上的许多示例感到困惑。

我看到 IEnumerable 实现为 get;和一些设定的时间;同样在其他情况下,我看到一个方法 void SetCategories(IEnumerable categories);

我的问题是关于 view (ex:IView) 的合同,它显示了 Categories IEnumerable 类别的列表

1)我应该什么时候实施void SetCategories(IEnumerable<Category> categories);


2)我应该什么时候实施IEnumerable<Category> Categories { get; set; }


3)我应该什么时候实施IEnumerable<Category> Categories { set; }

4

1 回答 1

0

1 和 3 非常相似,它们提供对类别的只写访问。如果您的演示者不需要阅读 Categories 集合,那么您应该使用 1 或 3。

哪一个?此代码分析规则可能适用于此。

如果替换集合是一个目标,那么首选的设计模式是包含一个从集合中删除所有元素的方法和一个重新填充集合的方法。

但是,在 MVP 中,使用属性而不是方法更为常见(这可能就是您看到所有三种场景示例的原因。)所以这确实是一个首选风格的问题。

选项 2 提供上述所有内容以及对该属性的读取访问权限。如果演示者必须查看集合并从中读取一个值(或所有值),您需要这个。我认为这里的首选模式是使整个集合处于只读状态或选定类别的属性,即。一个Category.

  • 如果您需要读写权限,选项 2 将起作用,但它会冒犯 fxCop。

  • 如果您只需要写权限,选项 1 将请 fxCop

于 2012-06-13T00:12:56.007 回答