我正在使用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 或者,也许,我可以在代码中从容器中获取合适的对象?因为我将这些存储库注册为单例。
答案 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以这种方式自行解决依赖