나는 시작하기 전에, 나는 다음과 같은 AOP 용어의 나의 현재 이해는 것을 명확히하고 싶습니다 ...PostSharp 포인트 컷
- 측면은 OOP의 클래스의 AOP에 해당합니다.
- 조언은 OOP의 메소드와 동일한 AOP입니다.
- Pointcut은 OOP에서 'using'코드와 동일한 AOP입니다. OOP에서 우리는 사물을 호출한다. AOP에서 우리는 물건을 짠다. 의 결정 무엇 직조 어디는 Pointcuts에 의해 정의됩니다. 실제 질문 상에,
...
이 나는 특성을 제외한 모든 방법에 (직물)를 사용하려는 PostSharp에서 로깅 측면이있다. 원래 내 측면에 다음을 사용 하였다 그러나
[MulticastAttributeUsage(MulticastTargets.Method, TargetMemberAttributes = MulticastAttributes.Instance)]
, 나는 특성에 실행에서 내 코드를 배제하기 위해 런타임에 차 검사를 수행했다 의미하는 측면이 여전히 속성으로 짠되고 있었다 발견 :
if (!methodName.StartsWith("set_") && !methodName.StartsWith("get_")) {
이상적인 것은 아닙니다. 내 포인트 컷에서이 동작을 정의하여 런타임 검사를 수행 할 필요가 없어야합니다.
빌드 시간에 조언을 위해 위버를 선택하는 데 도움이되는 콜백을 제공하는 것처럼 보이는 MethodPointcut
속성을 조사했습니다. 예제를 볼 수 있습니까?
여전히 작동한다고 가정 할 때, 필자는 '왜 포인트 컷을 내 어드바이스에 하드 코드해야합니까?'라고 생각하고 있습니다. 측면 및 조언은 정의/구현입니다. Pointcuts가 사용법입니다. 둘은 분리되어야합니다.
감사합니다. 그렇다면 MulticastTargets.Property는 무엇을 식별합니까? –
메서드 = 메서드는 있지만 생성자는 아니고, 속성 = 속성이지만 메서드는 아닙니다. http://doc.sharpcrafters.com/postsharp/2.0/##PostSharp.chm/html/T_PostSharp_Extensibility_MulticastTargets.htm –