IoC, MEF [Imports] 또는 다른 DI 솔루션을 사용하여 컴포지션 시간 대신 오브젝트 작성시 신속하게 종속성을 작성하는 방법이 있습니까?IoC - 오브젝트 인스턴스의 동적 구성
내 생각은 다음과 같습니다. 이벤트를 발생시키는 개체의 인스턴스가 있지만 개체를 한 번만 만들고 메모리에 저장하는 경우 개체를 만들 때마다 이벤트 처리기를 등록해야합니다. 내가 알 수있는 한, 대부분의 IoC 컨테이너는 composition에 사용 된 모든 클래스를 등록하고 Compose()를 호출하여 모든 종속성을 연결하도록 요구한다.
나는 이것이 객체 생성, 의존성 주입 등의 오버 헤드로 인해 이렇게하기 위해 끔찍한 디자인 (나는 레거시 시스템을 다루고있다)일지도 모른다라고 생각한다. 그러나 그것이 하나 일 가능성이 있는지 궁금해하고 있었다. 긴급한 IoC 기술의
어쩌면 몇 가지 용어가 섞여 있지만 내 목표는 객체의 인스턴스에 "모든 이벤트를 연결"하는 프레임 워크를 작성하지 말고 MEF 같은 것을 [내보내기] 핸들러 (종속성)에 사용하는 것입니다. 아주 특정 인터페이스와 [ImportMany]를 객체 인스턴스에 적용하여 응용 프로그램이 시작될 때 어셈블리가 있으면 내 내보내기가 호출됩니다. 그래서 어플 리케이션이 시작될 때 모든 오브젝트가 여전히 구성 될 수 있지만, 오브젝트가 작성되고 소멸 될 때 시스템이 모든 오브젝트를 찾고 호출하기를 원합니다.
일부 DI 컨테이너는 생성 팩토리도 지원합니다. 예를 들어 Func -delegate를 주입 할 수 있습니다. 그런 다음 DI 컨테이너는 IWidget 인스턴스에 대한 팩토리를 생성합니다. 예 : Autofac : http://nblumhardt.com/2010/01/the-relationship-zoo/ –
Gamlor
궁금한 점이 있으시면이 팩토리를 첫 번째 개체를 만들고자하는 클래스에 삽입해야할까요? 장소? 아니면 이것을 인스턴스화해야합니까? – stuartmclark
@stuartmclark : 공장에 주입했습니다. 이것이 IWidgetFactory이고 구체적인 유형이 아닌 이유입니다. 여러 IoC 컨테이너가 실제로 자동으로 팩토리를 생성 할 수 있기 때문에 위의 유형조차 필요하지 않습니다. 단지 'Func'또는 'Lazy '만 삽입하면됩니다. –
Aaronaught