Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/asp.net-mvc-3/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Asp.net mvc 3 在autofac中使用命名注册,并使用MVC过滤器属性注入_Asp.net Mvc 3_Autofac_Action Filter - Fatal编程技术网

Asp.net mvc 3 在autofac中使用命名注册,并使用MVC过滤器属性注入

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

据介绍,我正在使用Autofac填写我的过滤器的公共属性,效果非常好

直到我尝试为其中一个依赖项使用命名注册。我找不到做这件事的方法。我尝试手动注册我的过滤器,如下所示:

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