2

我遇到了一个经典的循环依赖问题,但我找到的解决方案(创建第三个程序集)似乎不适用于我的视图呈现器模式。

我需要在我的视图程序集中引用我的演示者 我需要在我的视图程序集中引用我的界面(与演示者在同一个程序集中)

好的,所以我在视图中引用了我的演示者/界面程序集,因为它们都在同一个地方。

现在问题来了:我需要在我的演示者/接口程序集中引用我的视图,以便能够使用我的一种视图类型(非系统类型,自定义控件)在我的接口中定义属性和访问器。由于循环依赖,我不能,而且我认为即使我在第三个程序集中移动我的界面,我将始终在这个新程序集和视图之间有一张 CD(因为我的视图需要我的界面,我的界面需要我的看法)

目标是在我的界面中设置一个属性和访问器,以便能够从我的演示者访问我的视图中的控件,因此我需要一个引用才能在界面中使用我的控件类型。

不容易说清楚,所以请随时问我,

非常感谢大家。

此致。

4

1 回答 1

1

作为一项规则,接口应该独立存在。当您需要隔离实现时(例如在视图和演示者之间的引用中),您可以使用接口。所以你应该有一个演示者界面和一个视图界面,​​如果他们都知道彼此而不是一个人知道另一个是必要的。

例子:

接口.dll:

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

查看.dll:

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

演示者.dll:

public MyPresenter : IMyPresenter
{
    private IMyView _myView;

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

尽管在我对模型视图演示者的理解中,视图不只是公开演示者需要的所有内容,并且视图不了解演示者,而是您将 IView 交给演示者,并将其自身绑定到任何需要的视图?

于 2010-09-21T17:46:04.033 回答