«dependency-injection» 태그된 질문

작동해야하는 소프트웨어 구성 요소 종속성에 동적으로 주입하여 구성 요소 간 연결을 줄이는 디자인 패턴입니다.

2
엔티티 / 비즈니스 객체에 대한 종속성을 해결하기 위해 IoC 컨테이너를 사용하지 않는 이유는 무엇입니까?
DI의 개념을 이해하지만 다른 IoC 컨테이너가 무엇을 할 수 있는지 배우고 있습니다. 대부분의 사람들은 상태 비 저장 서비스를 연결하기 위해 IoC 컨테이너를 사용하는 것을 옹호하는 것처럼 보이지만 엔티티와 같은 상태 저장 객체에 사용하는 것은 어떻습니까? 그것이 옳든 그르 든, 나는 그 행동에 외부 클래스가 필요하더라도 일반적으로 내 엔티티에 행동을 채운다. …

8
로거를 싱글 톤으로 사용하는 것이 좋은 방법입니까?
로거를 생성자에게 전달하는 습관이 있습니다. public class OrderService : IOrderService { public OrderService(ILogger logger) { } } 그러나 그것은 매우 성가신 일이므로 한동안 이것을 속성으로 사용했습니다. private ILogger logger = NullLogger.Instance; public ILogger Logger { get { return logger; } set { logger = value; } } 이것도 짜증이납니다. 건조하지 …

4
"Inversion of Control", "Dependency inversion"및 "Decoupling"의 차이점
나는 의존성 반전 과 디커플링 에 관한 이론을 읽고 있는데 둘 사이의 차이점을 볼 수 없습니다. 종속성 반전 은 더 높은 수준의 구성 요소가 더 낮은 수준의 구성 요소에 의존하지 않도록 기능 구성 요소를 분리하는 것을 말합니다. 디커플링 은 같은 일과 그것을 달성하는 방법에 대해 이야기합니다. 그러나 우리는 일을 더욱 …

5
Symfony의 서비스에 저장소를 삽입하는 방법은 무엇입니까?
두 개의 개체를 ImageService. 그중 하나는의 인스턴스이며 Repository/ImageRepository다음과 같이 표시됩니다. $image_repository = $container->get('doctrine.odm.mongodb') ->getRepository('MycompanyMainBundle:Image'); 그렇다면 내 services.yml에서 어떻게 선언합니까? 서비스는 다음과 같습니다. namespace Mycompany\MainBundle\Service\Image; use Doctrine\ODM\MongoDB\DocumentRepository; class ImageManager { private $manipulator; private $repository; public function __construct(ImageManipulatorInterface $manipulator, DocumentRepository $repository) { $this->manipulator = $manipulator; $this->repository = $repository; } public function findAll() …

3
ASP.NET MVC 3 작업 필터에 종속성 삽입. 이 접근 방식의 문제점은 무엇입니까?
여기에 설정이 있습니다. 서비스 인스턴스가 필요한 작업 필터가 있다고 가정 해 보겠습니다. public interface IMyService { void DoSomething(); } public class MyService : IMyService { public void DoSomething(){} } 그런 다음 해당 서비스의 인스턴스가 필요한 ActionFilter가 있습니다. public class MyActionFilter : ActionFilterAttribute { private IMyService _myService; // <--- How do …

4
종속성 주입과 함께 log4net을 사용하는 방법
나는 의존성 주입 프레임 워크에서 log4net의 올바른 패턴과 사용법을 알아 내려고 노력하고 있습니다. Log4Net은 ILog 인터페이스를 사용하지만 전화를해야합니다. LogManager.GetLogger(Reflection.MethodBase.GetCurrentMethod().DeclaringType) 정보를 기록해야하는 각 클래스 또는 메소드에서. 이것은 IoC 원칙에 위배되는 것으로 보이며 Log4Net을 사용하는 것과 연결됩니다. 어딘가에 다른 추상화 레이어를 넣어야할까요? 또한 다음과 같은 현재 사용자 이름과 같은 사용자 지정 속성을 …

1
.Net Core 3 Worker Service에서 앱 설정을 설정하는 방법
.Net Core 3에서 appsettings.json을 읽는 것과 관련된 많은 자습서와 SO 질문 (예 : App Settings .Net Core )을 살펴 보았으며 Worker 서비스를 처리 할 때 방법에 대한 포인터를 찾을 수 없습니다. 시작 방법이 없습니다. 대신 주요 방법으로 Program.cs가 있습니다. public class Program { public static void Main(string[] args) { CreateHostBuilder(args).Build().Run(); …

2
Angular 8과 9에서 'Window'와 Window를 제공하고 주입하는 것의 차이점은 무엇입니까?
이 버전을 사용하는 두 개의 Angular 프로젝트가 있습니다. 9.0.0- 다음 6 8.1.0 버전 9에서는 이것을 사용하여 window객체 를 제공하고 주입했습니다 . @NgModule({ providers: [ { provide: Window, useValue: window }, ] }) export class TestComponent implements OnInit { constructor(@Inject(Window) private window: Window) } 어느 것이 잘 작동합니까? 이 방법을 버전 …

3
Startup 클래스에 모든 것을 추가하는 것 외에 ASP.NET Core 3.1에서 종속성을 등록하는 강력한 방법이 있습니까?
ASP.NET Core 3.1 프로젝트가 있습니다. 일반적으로 클래스 의 ConfigureServices()메서드를 사용하여 종속성을 등록합니다 Startup.cs. 그러나 많은 의존성을 등록해야하고 ConfigureServices()외모가 엄청납니다! 정적 메서드의 확장 메서드를 만들어 ConfigureService () 클래스에서 호출 할 수는 있지만 더 좋은 방법이 있는지 궁금합니다. 이와 같이 한 번에 하나씩 정의하지 않고 IoC 컨테이너에 종속성을 등록하는 방법이있는 경우 services.AddScoped<Interface, …

3
파이썬에서 팩토리 메소드 대 프레임 워크 주입-더 깨끗한 것은 무엇입니까?
응용 프로그램에서 일반적으로하는 일은 팩토리 메소드를 사용하여 모든 서비스 / dao / repo / clients를 작성하는 것입니다 class Service: def init(self, db): self._db = db @classmethod def from_env(cls): return cls(db=PostgresDatabase.from_env()) 그리고 앱을 만들면 service = Service.from_env() 모든 의존성을 만드는 것 그리고 실제 db를 사용하고 싶지 않을 때 테스트에서 DI를 수행합니다. …

2
서비스를 구성 할 때 종속성 주입으로 Azure Function V3에서 IConfiguration을 주입하거나 사용하는 방법
일반적으로 .NET Core 프로젝트에서는 DI 등록 명령과 함께 서비스를 구성하는 'boostrap'클래스를 만듭니다. 이것은 일반적으로 같은 메소드를 IServiceCollection호출 할 수 있는 확장 메소드이며 .AddCosmosDbService필요한 모든 것이 해당 메소드를 포함하는 정적 클래스에서 '자체 포함'됩니다. 핵심은 메서드가 클래스 IConfiguration에서 가져 오는 것 입니다 Startup. 과거에 Azure Functions에서 DI를 사용해 봤지만 아직이 특정 요구 …
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.