自定义模型绑定器与Castle Windsor的依赖关系

时间:2011-12-24 13:23:11

标签: .net asp.net-mvc-3 castle-windsor

我正在使用ASP.NET MVC 3并拥有自定义模型绑定器。

public class NewsModelBinder : DefaultModelBinder
{
    private readonly INewsRepository newsRepository;
    private readonly ICategoryRepository categoryRepository;

    public NewsModelBinder()
    {

    }

    public NewsModelBinder(INewsRepository newsRepository, ICategoryRepository categoryRepository)
    {
        this.newsRepository = newsRepository;
        this.categoryRepository = categoryRepository;
    }

    protected override object CreateModel(ControllerContext controllerContext, ModelBindingContext bindingContext, Type modelType)
    {
         //Some code here
    }
}

我想与Castle Windsor解决依赖关系。但是如果我想要注册我的活页夹并希望温莎给它所需的参数,那么我可以这样做?因为当我注册活页夹时,我不能只给它所需的参数。

UPD 0 或者,也许,我可以在代码中从容器中获取合适的对象?因为我将这些存储库注册为单例。

2 个答案:

答案 0 :(得分:0)

答案 1 :(得分:0)

我用这种方式解决了问题:将我的依赖项设置为属性并使用属性注入

public class NewsModelBinder : DefaultModelBinder
{
    public INewsRepository NewsRepository { get; set; }
    public ICategoryRepository CategoryRepository { get; set; }

    public NewsModelBinder()
    {}

    protected override object CreateModel(ControllerContext controllerContext, ModelBindingContext bindingContext, Type modelType)
    {
         //Some code here
    }
}

然后在Global.asax中我添加了像这样的活页夹

ModelBinders.Binders.Add(typeof(News), Container.Resolve<NewsModelBinder>());

Windsor以这种方式自行解决依赖