>

IServiceCollection 를 통한 인터페이스 구성 및 주입을 단순화하는 도우미 클래스를 만들고 있습니다.  도서관. 라이브러리 생성자는 이전에 주입되었을 가능성이있는 많은 종속성을 포함합니다. 이들이 IServiceCollection 에 아직 삽입되지 않은 경우 도우미 클래스에 추가해야합니다. 인터페이스가 이미 주입되었는지 어떻게 감지합니까?

public static void AddClassLibrary(this IServiceCollection services
    , IConfiguration configuration)
{
     //Constructor for ClassLibrary requires LibraryConfig and IClass2 to be in place
     //TODO: check IServiceCollection to see if IClass2 is already in the collection. 
     //if not, add call helper class to add IClass2 to collection. 
     //How do I check to see if IClass2 is already in the collection?
     services.ConfigurePOCO<LibraryConfig>(configuration.GetSection("ConfigSection"));
     services.AddScoped<IClass1, ClassLibrary>();
}


  • 답변 # 1

    Microsoft는 이미 존재하는 서비스가 추가되지 않도록하는 확장 방법을 포함했습니다. 예를 들면 다음과 같습니다.

    // services.Count == 117
    services.TryAddScoped<IClass1, ClassLibrary>();
    // services.Count == 118
    services.TryAddScoped<IClass1, ClassLibrary>();
    // services.Count == 118
    
    

    이를 사용하려면 지시문을 사용하여 다음을 추가해야합니다.

    using Microsoft.Extensions.DependencyInjection.Extensions;
    
    

    내장 방법이 요구 사항을 충족하지 않으면 ServiceType 를 확인하여 서비스가 있는지 여부를 확인할 수 있습니다 .

    if (!services.Any(x => x.ServiceType == typeof(IClass1)))
    {
        // Service doesn't exist, do something
    }
    
    

  • 이전 MySQL에서 날짜 범위 쿼리 결과를 볼 수 없습니다
  • 다음 c# - 통일 할 때 경험하는 드래그를 어떻게 줄이나요?