Пользовательская модель переплета с зависимостями с Castle Windsor - PullRequest
0 голосов
/ 24 декабря 2011

Я использую 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
    }
}

И я хочу разрешить зависимости с замком Виндзор.Но каким образом я могу сделать это, если я хочу одновременно зарегистрировать свой переплет и я хочу, чтобы Виндзор дал ему необходимые параметры?Потому что когда я регистрирую связыватель, я не могу просто дать ему необходимые параметры.

UPD 0 Или, может быть, я могу получить подходящие объекты из контейнера в коде?Потому что я регистрирую эти репозитории как синглтоны.

Ответы [ 2 ]

0 голосов
/ 26 декабря 2011

Я решил проблему следующим образом: установил свои зависимости как свойства и использовал используемое свойство

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>());

Виндзор сам разрешает зависимости таким образом

0 голосов
/ 24 декабря 2011
...