나는 학습 목적으로 자체 IoC 컨테이너를 만드는 작업을하고 있습니다. 그들에 대한 몇 가지 질문을 한 후, 객체를 "해석하는"팩토리를 만드는 것이 최선의 해결책이라고 나타났습니다 (see third solution here). 사용자 Krzysztof Koźmic은 캐슬 윈저가 실제로 이것을 구현할 수 있음을 보여주었습니다.구현을 만들지 않고 구현 인터페이스 (동적 프록시)
나는 아침에 CW의 원천을 읽었습니다. Resolve가 호출되면 인터페이스를 반환합니다. 이 인터페이스는 (구현이 없기 때문에) "인터셉트"호출을 어떻게하고 자신의 메서드라고 부릅니까?
나는 분명히 여기에 어떤 반성의 속임수가 있으며 꽤 놀랍다는 것을 알고 있습니다. 나는 모든 사용자가 "차단"이 어떻게 이루어지는 지 알지 못합니다. 나는 자식에게 토끼 구멍을내어 내려고 노력했지만, 나는 길을 잃었다. 누군가가 올바른 방향으로 나를 가리킬 수 있다면 그것은 많이 감사 할 것입니다.
또한 - 호출 된 코드 내부의 컨테이너에 대한 종속성이있는 형식화 된 팩토리를 만들지 않았습니까? ASP.NET MVC 용어로는 나에게 그렇게 보인다.
EDIT : Found Reflection.Emit ... 사용 된 내용 일 수 있습니까?
EDIT2 : 점점 더 자세히 살펴보면 자동으로 공장을 생성하는 것이 더 복잡해집니다. 나는 반복적 인 코드를 고수하게 될지도 모른다.
의견을 보내 주셔서 감사합니다. 내가 만들고자하는 IoC 컨테이너에 대해 "조롱"을 사용하려고합니다. Castle Windsor는 일종의 기술을 사용하여 지정된 인터페이스를 구현하는 "typed factory"를 만듭니다. 크 르지 스 토프 (Krzysztof)에서 올린 링크를 읽으면 내가 무슨 뜻인지 알게 될 것입니다. 타사 라이브러리를 사용하고 싶지 않습니다. 내 모든 것을 배우기 위해서입니다. 클래스 생성에 대한 리소스가 있습니까? 편집 : 나는 일리노이를 사용하는 * 필요 * 모르겠다, 나는 그것이 어떻게 완료되었는지 궁금해서. 감사! :) – TheCloudlessSky
고마워요. 나는 독서를 시작할 것입니다. 나는 극단적 인 것처럼 보이기 때문에이 기능을 구현하지 않을 수도 있습니다. 그러나 매우 재미 있기 때문에 이것을 보겠습니다. 감사! – TheCloudlessSky
@TheCloudlessSky, IL은 많은 재미있는 일을 할 수 있기 때문에 많은 즐거움을 선사합니다. 하지만 많은 작업이 필요합니다. Emit 메서드는 매우 까다 롭습니다 (올바른 인수가 포함되어 있는지 확인하지 않으므로 런타임에 오류가 발생하거나 잘못 표시되는 IL 코드를 실수로 쉽게 만들 수 있습니다).) 당신이 그것으로 노는 경우에, peverify.exe가 당신의 친구다는 것을 다만 기억하십시오. –