1

是否可以使用 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);

问题是我收到以下错误:

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

如果我添加以下行,Startup.ConfigureServices那么它可以工作,但我正在寻找一种不需要我为每个经理都设置一行的解决方案。我一直认为 StructureMap 程序集扫描可以解决这个问题,但我也对其他解决方案持开放态度。

services.AddTransient<UserManager>();
4

1 回答 1

1

为您的通话添加.AddControllersAsServices()扩展方法。services.AddMvc()

结果:

services.AddMvc().AddControllersAsServices();
于 2016-09-06T11:10:33.877 回答