是否可以使用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>();
答案 0 :(得分:1)
将.AddControllersAsServices()
扩展方法添加到services.AddMvc()
来电。
结果:
services.AddMvc().AddControllersAsServices();