2010-09-21 33 views
2

我在經典的循環依賴關係問題之前,但我發現的解決方案(創建第三個程序集)似乎與我的視圖 - 呈現器模式沒有關係。視圖,主持人和界面之間的依賴關係

我需要引用我的演示者在我的視圖組件 我需要引用我的接口(其在相同的組件比演示者)在我的視圖組件

行,所以我引用我的演示/接口組件中因爲他們都在同一個地方的觀點。

現在問題來了: 我需要在我的演示者/接口程序集中引用我的視圖,以便能夠使用我的視圖類型之一(非系統類型,自定義控件)來定義屬性和訪問器接口。 我不能因爲循環依賴,我認爲即使我在第三個程序集中移動我的接口,我也會在這個新程序集和視圖之間始終有一個CD(因爲我的視圖需要我的接口和我的接口需求我的看法)

目標是在我的界面中設置屬性和訪問器,以便能夠從我的演示者訪問我視圖中的控件,因此我需要在界面中使用我的控件類型的引用。

這並不容易清楚,以便隨時問我更多,

非常感謝提前給大家。

此致敬禮。

回答

1

接口應該作爲一個規則獨立存在。當你需要實現的隔離時(比如在視圖和演示者之間的引用中),你使用一個接口。所以你應該有一個主持人界面和視圖界面,​​如果他們都知道彼此,而不僅僅是彼此的一種認識,那麼他們就應該是這樣。

例子:

Interface.dll:

public interface IMyView { string title; } 
public interface IMyPresenter { string GetTitle(); } 

View.dll:

public MyView : IMyView 
{ 
    private IMyPresenter _myPresenter; 
    public string Title { get { return _myPresenter.GetTitle(); } } 
} 

Presenter.dll:

public MyPresenter : IMyPresenter 
{ 
    private IMyView _myView; 

    public string GetTitle() 
    { 
     return ResourceManager["titleResource"]; 
    } 
} 

雖然在我的模型的理解查看主持人,不t他認爲只是宣傳主持人需要的一切,而觀點不知道主持人,而是將IView交給主持人,並且它隨時隨地都將視角與觀點聯繫起來?

+0

感謝您回覆的時間,我會看到這個週末 – benj007 2010-09-23 12:49:57

+0

我強烈反對。你給「理想愚蠢」的觀點提供更多的任務。所有這些演示邏輯應該進入演示者,並且最好甚至佈線。想象一下你有另一個視圖應用程序,你也必須在那裏完成所有的調用。所以不需要IPresenter。只需將IView傳遞給主持人,然後讓它處理。 – nawfal 2013-01-20 21:44:21