c# – MVP依赖注入

前端之家收集整理的这篇文章主要介绍了c# – MVP依赖注入前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
使用MVP,施工和依赖注入的正常顺序是什么?

通常您为每个视图创建一个演示者,并将视图传递给构造函数中的演示者.但是如果你有:

>多个视图需要收听事件的服务.
>多个视图都指向相同的数据模型缓存.

有人可以从用户点击数据从服务器返回到服务中显示正常的信息流.

解决方法

这是我做的:

首先我定义了这些接口:

public interface IView<TPresenter>
{
    TPresenter Presenter { get; set; }
}

public interface IPresenter<TView,TPresenter>
    where TView : IView<TPresenter>
    where TPresenter : IPresenter<TView,TPresenter>
{
    TView View { get; set; }
}

那么这个抽象主持人类:

public abstract class AbstractPresenter<TView,TPresenter> : IPresenter<TView,TPresenter>
    where TView : IView<TPresenter>
    where TPresenter : class,IPresenter<TView,TPresenter>
{
    protected TView view;

    public TView View
    {
        get { return this.view; }
        set
        {
            this.view = value;
            this.view.Presenter = this as TPresenter;
        }
    }
}

视图是通过属性注入的,而不是构造函数,以允许设置器中的双向感情.请注意,需要安全投掷…

那么我的具体主持人就是这样:

public class MyPresenter : AbstractPresenter<IMyView,MyPresenter>
{
    //...
}

IMyView实现IView的位置.必须存在具体的视图类型(例如MyView),但它是解析它的容器:

>我在容器中注册MyPresenter类型,具有暂时的行为.
>我将容器中的MyView作为IMyView注册为暂时性的行为.
>然后我要求一个MyPresenter到容器.
>容器实现MyView
>它建立一个MyPresenter
>它通过AbstractPresenter.View属性将视图注入演示者.
> setter代码完成双向关联
>容器返回情侣Presenter / View

它允许您将其他依赖项(服务,repos)注入到您的视图和演示者中.但是在您描述的场景中,我建议您将演示者注入服务和缓存,而不是视图.

猜你在找的C#相关文章