Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/258.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 在.NET Core DI中,是否有方法获取正在解析的类型?_C#_Asp.net Core_Dependency Injection_Asp.net Core 3.1_.net Core 3.1 - Fatal编程技术网

C# 在.NET Core DI中,是否有方法获取正在解析的类型?

C# 在.NET Core DI中,是否有方法获取正在解析的类型?,c#,asp.net-core,dependency-injection,asp.net-core-3.1,.net-core-3.1,C#,Asp.net Core,Dependency Injection,Asp.net Core 3.1,.net Core 3.1,我正在实际使用Microsoft.Extensions.DependencyInjection库(.NET Core 3.1),并试图找到一种基于正在解析的类型创建实例的方法 说明,让我们考虑下面的类、接口和主: interface ISomeService { } class SomeService1 : ISomeService { } class SomeService2 : ISomeService { } class SomeTypeBeingResolvedA { pu

我正在实际使用Microsoft.Extensions.DependencyInjection库(.NET Core 3.1),并试图找到一种基于正在解析的类型创建实例的方法

说明,让我们考虑下面的类、接口和主:

interface ISomeService
{
}

class SomeService1 : ISomeService
{
}

class SomeService2 : ISomeService
{
}

class SomeTypeBeingResolvedA
{
    public SomeTypeBeingResolvedA(ISomeService someService)
    {
    }
}

class SomeTypeBeingResolvedB
{
    public SomeTypeBeingResolvedB(ISomeService someService)
    {
    }
}

static void Main(string[] args)
{
    var serviceCollection = new ServiceCollection();

    serviceCollection.AddTransient<ISomeService>((IServiceProvider provider) =>
    {
        Type typeBeingResolved = ???; // <- How can I get this?
        if(typeBeingResolved == typeof(SomeTypeBeingResolvedA))
            return new SomeService1();
        if (typeBeingResolved == typeof(SomeTypeBeingResolvedB))
            return new SomeService2();
        ...
    });
}
接口服务
{
}
类SomeService1:ISomeService
{
}
类SomeService2:isomService
{
}
类SomeTypeBeingResolvedA
{
公共SomeTypeBeingResolvedA(等轴服务someService)
{
}
}
类SomeTypeBeingResolvedB
{
公共SomeTypeBeingResolvedB(ISomeService someService)
{
}
}
静态void Main(字符串[]参数)
{
var servicecolection=新servicecolection();
serviceCollection.AddTransient((IServiceProvider提供程序)=>
{

键入typeBeingResolved=???;//这是否回答了您的问题?