특정 기본 유형에 대한 인터 셉션을 Unity에 선언하고 모든 파생 된 유형에 대해 자동으로 인터 셉션을 수행하고자합니다.기본 클래스로부터의 유니티 인터셉트
나는 동일한 주제 두 개의 서로 다른 SO 게시물을 볼 수 있지만, 어느 쪽도 내가 찾고 답이 없습니다 :
-
이
- Microsoft Unity Base Class Interception
이 사람이 나를 내가 이미 알고있는 이야기를; 여전히 충분한 정보가 아닙니다. - Unity Interception in Derived Classes
이 항목은 매우 자세하지만 자세한 내용은 사용중인 필수 형식 대신 Unity 구성과 관련이 있습니다.
그래서 내가 갖고있는 코드를 보여주고 시나리오에 대한 답변을 얻을 수 있는지 확인하고 싶습니다.
나는이 수업을 :
public abstract class RootController
{
[Report]
public abstract void Action();
}
public class MyController
{
public void Action()
{
Console.WriteLine("hey");
}
}
에서 [리포트] 주석이 내 자신의 사용자 지정 특성 - 그것은 AOP 로깅 방법에 적용해야 나타냅니다. 다음과 같이이 정책 기반의 차단과 함께 사용하는 나는 준비 :
container.AddNewExtension<Interception>();
container.RegisterInstance<InjectionPolicy>(typeof(ReportAttributePolicy).AssemblyQualifiedName, new ReportAttributePolicy());
container.RegisterType<RootController>(
new Interceptor<VirtualMethodInterceptor>(),
new InterceptionBehavior<PolicyInjectionBehavior>()
);
ReportAttributePolicy
는 AttributeDrivenPolicy
의 내 사용자 지정 버전입니다. 자세한 내용은 내 Unity Interception 블로그 게시물을 참조하십시오.
var yup = container.Resolve<MyController>();
요청 유형은 단지 RootController
에서 파생하더라도, 내가 해결 된 유형을 싶습니다 내 ReportAttributePolicy
당, AOP 로깅으로 계측 할 수 :
는 분명 내가이 작품을 만들기 위해 노력하고있어 시나리오는 이것이다 .
위 코드를 실행하면 내 ReportAttributePolicy의 메소드가 실행되지 않습니다. 이것은 내가 마술을 일으킬 기회가 없다는 것을 의미합니다. 상속 예제를 다루지 않는다면 모든 것이 잘 동작합니다.
어떻게하면 상속을 사용할 수 있습니까?