2012-05-24 103 views
0

我在asp.net中實現了一個MVP模式,並且很多Web上的例子都與之混淆。MVP模式屬性設置或獲取

我看到IEnumerable實現爲get;並且有時會如此設定;也在其他場景我看到一個方法void SetCategories(IEnumerable categories);

我的問題是合同的視圖(例如:IVIEW),顯示什麼時候應該實行分類的列表的IEnumerable類

1)void SetCategories(IEnumerable<Category> categories);


2)我應該何時實施IEnumerable<Category> Categories { get; set; }


3)我什麼時候應該實現IEnumerable<Category> Categories { set; }

回答

0

1和3非常相似,它們提供對類別的只寫訪問。如果您的演示者不是需要閱讀分類集合,那麼您應該使用1或3.

哪一個?這code analysis rule可能適用於此。

如果替換集合是一個目標,首選的設計模式是包含一個方法來刪除集合中的所有元素以及重新填充集合的方法。

但是,在MVP中,使用屬性而不是方法更爲常見(這可能是爲什麼你看過所有三種情況的例子。)所以這實際上是一個首選樣式的問題。

選項2提供了以上所有內容以及對該屬性的讀取權限。如果演示者必須查看集合並從中讀取值(或所有值),則需要此操作。我認爲這裏的首選模式是一個屬性,可以讓整個集合處於只讀狀態或選定的類別,即。單一的Category

  • 如果你需要讀取和寫入權限,選項2將工作,但它會 得罪的FxCop。

  • 如果你只是需要寫權限,選項1將請的FxCop用於清理

+0

謝謝 – Greens