저는 특정 구현을 추구하지는 않지만 제가하려고하는 것에 대한 적절한 용어를 파악하려고 노력하므로 주제를 적절히 연구 할 수 있습니다..Net DI 컴파일 시간 프록시 구현?
나는 많은 인터페이스를 가지고 있으며 이러한 인터페이스는 컨트롤러, 리포지토리, 서비스 및 기타 등등으로 구현됩니다. 응용 프로그램 시작 프로세스의 어느 곳에서 우리는 Castle.MicroKernel.Registration.Component
클래스를 사용하여 특정 인터페이스에 사용할 클래스를 등록합니다. 예를 들면 다음과 같습니다.
Component.For<IPaginationService>().ImplementedBy<PaginationService>().LifeStyle.Transient
최근에 모든 클래스와 메소드 호출의 감사 추적을 만드는 데 관심이 생겼습니다. 이 클래스 중 몇 백 개가 있으므로 수동으로 프록시 클래스를 작성하는 것은별로 실용적이지 않습니다. 템플릿을 사용하여 코드를 생성 할 수는 있지만 모든 코드베이스를 폭파하지는 않을 것입니다.
비행 솔루션에 어떤 종류가 있는지 궁금합니다. 나는 nHibernate가 모든 엔티티 클래스를 오버레이하는 어떤 지점에서 프록시 클래스를 생성한다는 것을 알고있다. 누군가 내가 여기 비슷한 것을 할 수있는 방법에 대한 지침을 나에게 줄 수 있습니까? 같은
뭔가 : 나는 방법의 유형이 아니라 방법 자체를 일반화 제네릭을 사용하는 경우에만 할 수 있기 때문에
Component.For<IPaginationService>().ImplementedBy<ProxyFor<PaginationService>>().LifeStyle.Transient
은 물론 그 작동하지 않습니다. 이 작업을 수행하는 데 사용할 수있는 까다로운 리플렉션 접근법이 있습니까?
[Aspect-Oriented Programming : RealProxy 클래스를 사용한 Aspect-Oriented Programming] (https://msdn.microsoft.com/en-us/magazine/dn574804.aspx)과 같은 의미입니까? – NightOwl888
당신이하고 싶은 것을 잘 모르겠습니다. 알고 계시 겠지만, 리플렉션을 사용하여 런타임에 프록시를 만들 수 있습니다. Hibernate와 EF는 그것을 수행하고 게으른 로딩과 다른 기능들을 가능하게한다. [this post] (https://stackoverflow.com/a/4802281/316799)를 참조하십시오. 감사를 위해 NHibernate의 Listeners를 사용하고 싶습니다. 매우 유용한 기능입니다 :) –
동적 가로 채기를 고려 했습니까? http://app-code.net/wordpress/?p=689 –