Dav*_*d E 7 c# asp.net-mvc castle-windsor
我需要一些帮助 - 我试图在需要进行数据库调用的ASP.NET MVC Web项目中使用自定义验证属性.
我有windsor成功地为控制器工作,并正常注入IRepository接口.当我需要将存储库注入属性类时,问题就出现了.
属性类具有以下代码:
public class ValidateUniqueUrlNodeAttribute : AbstractValidationAttribute
{
private readonly string message;
private readonly IArticleRepository articleRepository;
public ValidateUniqueUrlNodeAttribute(string message)
{
this.message = message;
}
public ValidateUniqueUrlNodeAttribute(string message, IArticleRepository articleRepository):this(message)
{
this.articleRepository = articleRepository;
}
public override IValidator Build()
{
var validator = new UniqueUrlNodeValidator(articleRepository) { ErrorMessage = message };
ConfigureValidatorMessage(validator);
return validator;
}
Run Code Online (Sandbox Code Playgroud)
我的问题是我似乎无法让Windsor拦截传递给IArticleRepository的属性的构造
我的global.asax文件中的当前代码如下:
container = new WindsorContainer();
ControllerBuilder.Current.SetControllerFactory(new WindsorControllerFactory(Container));
container
.RegisterControllers(Assembly.GetExecutingAssembly())
.AddComponent<IArticleRepository, ArticleRepository>()
.AddComponent<ValidateUniqueUrlNodeAttribute>();
Run Code Online (Sandbox Code Playgroud)
任何帮助将不胜感激.
AFAIK没有依赖注入容器可以直接管理属性,因为它是由运行时实例化的,并且没有办法拦截它.
但是,他们可以通过以下方式作弊:
Windsor不支持#2(ref1,ref2),所以你可以:
| 归档时间: |
|
| 查看次数: |
7837 次 |
| 最近记录: |