내 응용 프로그램에서는 이전에 메서드에 "주석을 추가"하기 위해 일반 C# 특성을 사용했습니다. 예컨대 :한 가지 방법의 여러 측면
[Foo(SomeKey="A", SomeValue="3")]
[Foo(SomeKey="B", SomeValue="4")]
public void TheMethod()
{
SpecialAttributeLogicHere();
}
무엇 SpecialAttributeLogicHere()했던, 반 성적이 특정 방법을 주석 모든 푸 - 속성을보고했다. 그런 다음 (자체적으로) 모든 키와 값에 대해 고유 한 사전을 만듭니다.
이제 OnAntry 내에서 SpecialAttributeLogic을 (더 깨끗한 메서드 본문에서 제거하여) aspect에 넣을 수 있기 때문에 PostSharp로 이동하려고합니다. Foo는 OnMethodBoundaryAspect를 확장하는 애스펙트로 대체 될 것입니다.
[Foo(SomeKey="A", SomeValue="3")]
[Foo(SomeKey="B", SomeValue="4")]
를하지만 푸가 OnEntry을 가지고있는 경우 "SpecialAttributeLogic는"두 번 실행된다는 것을 의미한다 :
나는 아직도 그것을 다음과 같은 방법을 사용하고 싶습니다. 기본적으로 각 Foo()의 모든 키와 값을 사전에 "모으고"사전에 논리를 적용해야합니다.
PostSharp로이를 수행하는 방법 (또는 모범 사례)은 무엇입니까? 감사!
실례를 아래의 답에서 추가했습니다. –