2009-11-24 3 views
2

내가 좋아하는 IOC를 통해 설정, 일부 AOP 물건을 할 유니티와 함께 ​​주위를 연주했습니다유니티 IOC, AOP 및 인터페이스 차단

ioc.RegisterType<ICustomerService, CustomerService>() 
    .Configure<Interception>().SetInterceptorFor<ICustomerService>(new InterfaceInterceptor()); 

... 다음 ICustomerService 인터페이스의 방법에 ICallHandler을 가진 . teh 시간 동안 나는 방금 호출 된 메소드, 그 클래스의 클래스 및 해당 클래스의 네임 스페이스를 가져 오려고합니다. 내가 input.MethodBase.DeclaringType.Name 전을 사용하는 경우 그래서 ... 안에 ...

public IMethodReturn Invoke(IMethodInvocation input, GetNextHandlerDelegate getNext) 

... ICallHandler 방법, 난 ... input.MethodBase.Name를 통해 메소드 이름에 액세스 할 수 있습니다 ICustomerService 인터페이스를 얻을 ...하지만 어떻게 인터페이스를 구현하는 대신 "CustomerService"클래스를 구현할 것인가?

나는 input.Target를 사용하는 들었어요 ..하지만 그건 그냥 "DynamicModule.ns.Wrapped_ICustomerService_4f2242e5e00640ab84e4bc9e05ba0a13"

이 사람들에 어떤 도움을 반환?

답변

1

나는 약간의 시간 전에 유사한 것을 시도했다. 나는 Unity 소스 코드를 통해 약간의 연구를했다. 그리고 내게 주어진 유일한 해결책은 의 사적인 필드로부터의 반사에 의해 CustomerService 인스턴스를 얻는 것이었다. 이름을 기억하면 쉽게 디버거에서 찾을 수 있습니다.) 나는 이것이 우아하고 maintanable 해결책이 아니라는 것을 안다. 그러나 이것이 우리가 할 수있는 전부인 것처럼 보인다.