728x90
반응형

 

 

ASP.NET Core 3.1 에서 ConfigureServices 메소드에서 Dependency Injection 의존성 주입을 진행하는데, 

제네릭 클래스의 경우 어떻게 진행해야 하는지 궁금했습니다. 

MSDN에서는 정보를 찾지 못해서, stackoverflow를 검색한 결과, 해당 내용을 찾을 수 있었습니다. 

 

 

Sample Code

먼저 의존성 주입을 위한 제네릭 interface 와 class를 제작해줍니다.

public interface ISample<Request, Response>
{
    bool GetData();
}



public class Sample<Request, Response> : ISample<Request, Response>
    where Request : class, new()
    where Response : class, new()
{
    public bool GetData()
    {
        return true;
    }
}


의존성 주입 (Dependency Injection)

public void ConfigureServices(IServiceCollection services)
{
    services.AddControllersWithViews();

    services.AddTransient(typeof(ISample<,>), typeof(Sample<,>));
}

Startup.cs 의 ConfigureServices 메소드에, 위와 같이 typeof를 이용해서 제네릭 클래스의 경우 의존성을 주입할 수 있습니다. 

 

public HomeController(ILogger<HomeController> logger, ISample<Req, Res> sample)
{
    _logger = logger;
}

이제 컨트롤러에서 위와같이 사용하시면 됩니다.

만약 제네릭 타입을 하나만 이용하실 경우에는 , (콤마) 없이 ISample<> 만 사용해서 적용해주시면 됩니다.

 

 

 

 

 

 

stackoverflow.com/questions/56271832/how-to-register-dependency-injection-with-generic-types-net-core

 

How to register dependency injection with generic types? (.net core)

I have an asp.net core web app with multiple parameters in appSettings.json file. I didnt' want to have services having IOptions in the constructor. I wanted MyObject in the const...

stackoverflow.com

 

728x90

+ Recent posts