2013-02-08 2 views
1

에 적용 받기 :로 사용하는 반사에 대한PostSharp OnMethodBoundaryAspect의 일반적인 인수 내가 <code>OnEntry</code> 또는 <code>OnExit</code> 동안 <code>typeof(T1)</code>을 얻는 방법 다음과 같은 설정의 PostSharp OnMethodBoundaryAspect을 감안할 때 일반적인 방법

보너스 포인트.

측면 :

public class MyOnMethodBoundaryAspect : OnMethodBoundaryAspect 
{ 
    public override void OnEntry(MethodExecutionArgs args) 
    { 
     //args.??? -- How to get typeof(T1) 
    } 
} 

방법 : 내가 연령대에 PostSharp를 사용하지 않은,하지만 당신은 단지 Method 속성을 사용할 필요가처럼 보이는

[MyOnMethodBoundaryAspect] 
public void Foo<T1>() 
{ 

} 

답변

4

:

실행 된 메소드가 generic이거나 선언 유형이 generic 인 경우 현재 등록 정보에는 실행중인 제네릭 인스턴스가 포함됩니다.

따라서 입력 인수를 얻으려면 MethodBase.GetGenericArguments을 사용할 수 있어야합니다.

+1

올바른 내용입니다. 'args.Method'는 호출 메소드의 올바른 일반적인 인스턴스를 포함합니다. –

+0

감사합니다. 방금 프로 라이센스로 변경했습니다. 메소드가 null이고 채워지지 않았습니다. 왜냐하면 아직 내 코드에서 참조하지 않았기 때문입니다. 여기에서 방금 찾은 것 : http://stackoverflow.com/questions/6559589/postsharp-newbie-why-is-args-instance-null – Tyst