小编DrS*_*one的帖子

使用依赖注入注入多个实现

我目前正在开发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)

c# dependency-injection asp.net-core-mvc asp.net-core

13
推荐指数
1
解决办法
2万
查看次数