Asp.net mvc 3 在autofac中使用命名注册,并使用MVC过滤器属性注入
据介绍,我正在使用Autofac填写我的过滤器的公共属性,效果非常好 直到我尝试为其中一个依赖项使用命名注册。我找不到做这件事的方法。我尝试手动注册我的过滤器,如下所示:Asp.net mvc 3 在autofac中使用命名注册,并使用MVC过滤器属性注入,asp.net-mvc-3,autofac,action-filter,Asp.net Mvc 3,Autofac,Action Filter,据介绍,我正在使用Autofac填写我的过滤器的公共属性,效果非常好 直到我尝试为其中一个依赖项使用命名注册。我找不到做这件事的方法。我尝试手动注册我的过滤器,如下所示: builder.RegisterType<MyCustomAttribute>() .WithProperty(ResolvedParameter.ForNamed<INamedDependency>("dependencyName")); builder.RegisterType()
builder.RegisterType<MyCustomAttribute>()
.WithProperty(ResolvedParameter.ForNamed<INamedDependency>("dependencyName"));
builder.RegisterType()
.WithProperty(ResolvedParameter.ForNamed(“dependencyName”));
在调用RegisterFilterProvider方法之前,但这不起作用
有什么想法吗?如果在更新的版本中修复了这个问题,我将使用版本2.5.2.830
谢谢,
Kostas可能是您刚刚忘记在容器中注册INamedDependency实例:
public class MyCustomAttribute : FilterAttribute
{
public IDependencyName DependencyName { get; set; }
}
public interface IDependencyName
{
}
public class DependencyName : IDependencyName
{
}
[Test]
public void ResolveCustomTest()
{
// Arrange
var dependencyInstance = new DependencyName();
var builder = new ContainerBuilder();
builder.RegisterInstance(dependencyInstance).Named<IDependencyName>("dependencyName");
builder.RegisterType<MyCustomAttribute>().WithProperty(ResolvedParameter.ForNamed<IDependencyName>("dependencyName"));
builder.RegisterFilterProvider();
var root = builder.Build();
// Act
var attr = root.BeginLifetimeScope("AutofacWebRequest").Resolve<MyCustomAttribute>();
// Assert
Assert.AreEqual(attr.DependencyName, dependencyInstance);
}
公共类MyCustomAttribute:FilterAttribute
{
public IDependencyName DependencyName{get;set;}
}
公共接口IDependencyName
{
}
公共类DependencyName:IDependencyName
{
}
[测试]
public void ResolveCustomTest()
{
//安排
var dependencyInstance=新的DependencyName();
var builder=new ContainerBuilder();
RegisterInstance(dependencyInstance).Named(“dependencyName”);
builder.RegisterType().WithProperty(ResolvedParameter.ForName(“dependencyName”));
builder.RegisterFilterProvider();
var root=builder.Build();
//表演
var attr=root.BeginLifetimeScope(“AutofacWebRequest”).Resolve();
//断言
AreEqual(attr.DependencyName、dependencyInstance);
}