我目前正在开发ASP.NET核心项目,并希望使用内置的依赖注入(DI)功能.
好吧,我开始使用界面:
ICar
{
string Drive();
}
Run Code Online (Sandbox Code Playgroud)
并希望ICar多次实现这个界面
public class BMW : ICar
{
public string Drive(){...};
}
public class Jaguar : ICar
{
public string Drive(){...};
}
Run Code Online (Sandbox Code Playgroud)
并在Startup课程中添加以下内容
public void ConfigureServices(IServiceCollection services)
{
// Add framework services.
services.AddMvc();
services.AddTransient<ICar, BMW>();
// or
services.AddTransient<ICar, Jaguar>();
}
Run Code Online (Sandbox Code Playgroud)
现在我必须在两个实现之间做出决定,我决定的类将在每个需要ICar实现的构造函数中设置.但我的想法是,如果请求的控制器是BMWController,那么如果请求JaguarController,则使用BMW实现或使用Jaguar.
DI对我来说没有意义.我该如何正确处理这个问题?
为了更好地理解我的问题,请查看此图片:https://media-www-asp.azureedge.net/media/44907/dependency-injection-golf.png ?raw = true如何依赖解析器如何工作以及哪里可以我在ASP.NET Core中设置它?
在Unity中,可以制作这样的东西
container.RegisterType<IPerson, Male>("Male");
container.RegisterType<IPerson, Female>("Female");
并调用这样的正确类型
[Dependency("Male")]IPerson malePerson
Run Code Online (Sandbox Code Playgroud)