Microsoft DI ServiceProvider에 대한 지연 종속성 주입
문제와 코드를 오염시키지 않고 문제를 정상적으로 해결할 수 있는 하나의 솔루션에 대해 자세히 설명했습니다. 이 솔루션은 IoC 컨테이너에 LazyProxy을 사용하는 것입니다. 주요 아이디어는 실제 유형의 객체를 프록시로 대체하는 것입니다. 이 프록시는 특정 인터페이스
T
를 구현하고 Lazy<T>
를 통해 이 인터페이스의 모든 멤버를 호출한 런타임 생성 유형입니다. 따라서 Lazy<T>
인터페이스 대신 T
가 주입된 것처럼 동작이 변경됩니다. 인스턴스는 요청 시에만 생성되지만 동시에 코드는 깨끗한 상태를 유지합니다.오늘
LazyProxy
컨테이너를 하나 더 사용할 수 있게 되었음을 알려드립니다. LazyProxy.ServiceProvider 라이브러리는 Microsoft's DI ServiceProvider 에 대한 지연 종속성 주입을 허용합니다.이 라이브러리의 사용법은 이미 존재하는 라이브러리LazyProxy.Unity 및 LazyProxy.Autofac과 유사합니다.
다음은 이 라이브러리를 사용하는 방법의 예입니다. 다음 인터페이스 및 구현을 고려하십시오.
public interface IFoo
{
void Bar();
}
public class Foo: IFoo
{
public Foo() => Console.WriteLine("Ctor");
public void Bar() => Console.WriteLine("Bar");
}
이 서비스에 대한 지연 등록은 다음과 같이 추가할 수 있습니다.
// Creating a service collection
var services = new ServiceCollection();
// Adding a lazy registration
services.AddLazyScoped<IMyService, MyService>();
// Building the service provider
var serviceProvider = services.BuildServiceProvider()
등록된 서비스의 다음 사용법을 고려하십시오.
Console.WriteLine("Resolving the service...");
var foo = serviceProvider.GetService<IFoo>();
Console.WriteLine("Executing the 'Bar' method...");
foo.Bar();
출력:
Resolving the service...
Executing the 'Bar' method...
Ctor
Bar
출력에서 볼 수 있듯이 생성자는 메서드
Bar
에 대한 첫 번째 호출이 수행될 때까지 호출되지 않습니다.LazyProxy.ServiceProvider 라이브러리의 이니셔티브와 훌륭한 초기 구현은 전적으로 에 속하며, 이에 대해 전체 오픈 소스 커뮤니티를 대신하여 감사와 감사를 표하고 싶습니다. 게다가 Carlos는 다른 모든 LazyProxy의 리포지토리와 함께 새 리포지토리를 이동하는 것을 관대하게 허용했습니다. 이는 게으른 종속성 주입 아이디어에서 큰 진전이었습니다.
GitHub 저장소
LazyProxy
LazyProxy.Autofac
LazyProxy.Unity
LazyProxy.ServiceProvider
Reference
이 문제에 관하여(Microsoft DI ServiceProvider에 대한 지연 종속성 주입), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://dev.to/hypercodeplace/lazy-dependency-injection-for-microsoft-di-serviceprovider-2149
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
Reference
이 문제에 관하여(Microsoft DI ServiceProvider에 대한 지연 종속성 주입), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/hypercodeplace/lazy-dependency-injection-for-microsoft-di-serviceprovider-2149텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)