MVP 模式属性设置或获取

本文关键字:获取 设置 属性 模式 MVP | 更新日期: 2023-09-27 18:35:11

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

我看到 IEnumerable 实现为 get; 有时是设置的; 在其他情况下,我看到一个方法 void SetCategories(IEnumerable categories);

我的问题是针对查看合同(例如:IView),它显示了类别列表 IE无数类别

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


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


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

MVP 模式属性设置或获取

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

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

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

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

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

  • 如果您需要读写访问权限,选项 2 将起作用,但它会冒犯了特效警察。

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