2012-04-18 4 views
2

틀림없이, 이것은 길다. 나는 작업의 시작과 끝에서 감사 레코드를 열고 닫는 감사 작업을하고 있습니다. 메소드를 감사하기 위해, [Audit(AuditType.Something)] 속성을 추가하고 필요한 경우 메시지와 같은 다른 정보도 추가해야합니다. 그런 다음 SNAP을 사용하여 Audit 객체를 만든 다음이를 열고 닫는 인터셉터가 있습니다.속성을 사용하여 메소드에 매개 변수 추가하기

감사에서 불변 메시지를 필요로하는 동료로부터 사례가 나왔습니다. 즉, 속성 선언에 참여할 수 없습니다. 나는 클래스에서 Audit 속성을 고수하고 인젝터가 메소드를 계속 진행하기 전에 설정하는 것에 대해 생각해 봤지만 속성이 감사 대상이 아닌 객체에 의해 액세스 가능할 것이므로 부적절한 것처럼 보였습니다. 장소. 속성없이 감사를 만드는 방법도 있지만 속성에 멋지게 포장 된 것을 유지하는 것이 훨씬 더 좋을 것입니다.

[Audit] 속성을 가진 메소드가 인젝터에서 감사 개체를 고정시킬 수있는 변수에 액세스 할 수 있도록 어떻게 든 설정할 수 있다면 이상적인 경우입니다. 이 모든 것이 가능합니까 아니면 단지 희망적인 사고입니까?

답변

1

감사 속성에 Type 유형의 매개 변수를 사용하면 제공된 Type에 감사 메시지를 생성하는 인터페이스가 구현됩니다. 예를 들어 :

public interface IAuditMessageProvider { 
    public String MakeMeAnAuditMessage(/* some args perhaps */); 
} 

public class PiAuditMessageProvider : IAuditMessageProvider { 
    public String MakeMeAnAuditMessage() { return "3.14"; } 
} 

[Audit(typeof(PiAuditMessageProvider))] 
public void myMethod { ... } 

그런 다음 당신은 Activator.CreateInstance를 사용하여 제공된 유형을 인스턴스화 할 수 IAuditMessageProvider에 캐스팅하고 해당 메서드를 호출합니다.

관련 문제