ASP.NET 5 Controller依赖注入具体类,没有接口到控制器

时间:2016-03-09 16:58:03

标签: asp.net-core structuremap structuremap4

是否可以使用StructureMap扫描程序集以了解不实现接口的具体类?我对StructureMap相当陌生,所以不确定这是不是很明显。

对于上下文,以下是我正在使用的类的亮点。 UserController取决于UserManager的实例,该实例取决于IUserRepository的实例。

public interface IUserRepository { }

public class UserRepository { }

public class UserManager
{
    public UserManager(IUserRepository repository) { }
}

public class UserController
{
    public UserController(UserManager manager) { }
}

这是我在Startup.ConfigureServices方法中对DI进行扫描的代码:

// Setup dependencies using StructureMap
var container = new Container(x =>
{
    x.Scan(s =>
    {
        s.AssemblyContainingType<UserRepository>();
        s.WithDefaultConventions();
    });
});

container.Populate(services);

问题是我收到以下错误:

  

尝试时无法解析“UserManager”类型的服务   激活'UserController'。

如果我将以下行添加到Startup.ConfigureServices,那么它可以正常工作,但我正在寻找一种解决方案,不需要我为每个经理提供一行。我一直认为StructureMap汇编扫描可以解决这个问题,但我也对其他解决方案持开放态度。

services.AddTransient<UserManager>();

1 个答案:

答案 0 :(得分:1)

.AddControllersAsServices()扩展方法添加到services.AddMvc()来电。

结果:

services.AddMvc().AddControllersAsServices();