如何将对象而不是类型传递给Windsor容器?

时间:2020-03-06 14:50:28  来源:igfitidea点击:

我有以下课程:

public class ViewPage<TView,TPresenter> : Page 
    where TView : IView
    where TPresenter : Presenter<TView>
{
    public ViewPage()
    {
        if (!(this is TView))
            throw new Exception(String.Format("The view must be of type {0}", typeof(TView)));

        IWindsorContainer container = new WindsorContainer();
        container.AddComponent("view", typeof(IView), typeof(TView));
        container.AddComponent("presenter", typeof(Presenter<TView>), typeof(TPresenter));
        TPresenter presenter = container[typeof(TPresenter)] as TPresenter;
    }
}

这是Presenter代码:

public class Presenter<T> where T : IView
{
    public T View { get; private set; }

    public Presenter(T view)
    {
        this.View = view;
    }
}

我想通过Windsor将ViewPage的当前实例传递给TPresenter,而不是实例化一个新对象。这可能吗?

解决方案

检查此博客。作者为确切问题解释了解决方案。