2010-05-31 44 views
4

在winforms中實現MVP模式時,我經常會發現具有太多屬性,設置者和獲取者的臃腫視圖接口。一個簡單的例子,帶有3個按鈕和7個文本框的視圖,所有視圖都具有值,啓用和可見屬性。爲此添加驗證結果,並且您可以輕鬆結束具有40個屬性的界面。使用演示模型,將會有一個具有相同數量屬性的模型。MVP,WinForms - 如何避免臃腫的視圖,演示者和演示文稿模型

如何輕鬆地同步視圖和演示文稿模型,而不需要讓來回傳遞所有值的臃腫演示者邏輯? (用80年代線代碼的代碼,試想一下,演示者測試嘲笑模型和視圖將看起來像.. 160線代碼只是爲了模擬該傳輸。)有沒有任何框架來處理這個問題,而不訴諸於winforms數據綁定? (你可能想使用不同的視圖,而不是一個winforms視圖。據一些人說,這個同步應該是演示者的工作..)你會使用AutoMapper嗎?

也許我問錯了問題,但在我看來,MVP容易得到這裏沒有一些好的解決方案臃腫..

+0

[用Windows窗體實現MVC]的可能的重複(http://stackoverflow.com/questions/654722/implementing-mvc-with-windows-forms) – 2010-05-31 13:47:16

+1

我不認爲它是重複的。我想iv閱讀該線程和所有參考文獻中的所有內容。如果你能指出我對解決這個「膨脹」問題的問題的答案,請做。 – MatteS 2010-06-01 10:32:21

回答

3

這只是一個想法,我知道有些人可能不喜歡它 - 有在這裏你可以做很多不同的事情。

如果您發現自己使用了大量的樣板代碼,請將其封裝。

public class UiField<ContentType> 
{ 
    public bool IsEnabled { get; set; } 
    public ContentType Value { get; set; } 
    public bool IsVisible { get; set; } 
} 

在您看來,則:

public interface ISampleView 
{ 
    UiField<bool> IsStaffFullTime { get; set; } 
    UiField<string> StaffName { get; set; } 
    UiField<string> JobTitle { get; set; } 
    UiField<int> StaffAge { get; set; } 
    UiField<IList<string>> Certifications { get; set; } 
} 

在這裏,您包裹每個字段關聯的各種屬性。順便提一句,我建議你不要手工測試這些接口 - 使用模擬框架。

+0

演示者模型看起來是否與之相同?您是否可以爲使用此視圖和/或模型的任何操作提供演示者測試?我首先擔心的是測試代碼會變得更加臃腫,但我不確定,直到我看到它或嘗試它。 – MatteS 2010-06-01 08:35:12

相關問題