2014-10-14 3 views
0

차단 컨테이너에 Unity 컨테이너를 사용하고 있으므로 [Trace] 속성을 추가하려고합니다 (예 : ).속성이 인터페이스를 구현할 수 있습니까?

공용 클래스 TraceAttribute : HandlerAttribute

다음 코드에서, 난과 같이 사용할 수 있습니다 : 여기

public class MyClass 
{ 
    [Trace] 
    public void DoSomething() 
    { 
     ... 
    } 
} 

내 질문 /의 목표 : 내가 추적을 원하지 않는 속성은 Unity 차단에 묶여 있어야합니다. 나중에 DI 컨테이너를 변경하거나 내 자신을 구현하고 싶으면 인터페이스와 마찬가지로 인터페이스를 바꾸고 싶습니다.

뭔가 같은 :

공용 인터페이스의 TraceAttribute :

ITraceAttribute

다음은 특정 구현이? 그게 가능하니?

우리가 직면 한 과제 중 하나는 Trace 특성을 사용하는 모든 곳에서 Unity 어셈블리를 설치해야한다는 것입니다.이를 피하고 싶습니다.

감사합니다.

+1

나는 * 가능 * 할 것이 확실하지만 아무 것도하지 않을 것입니다. Unity가'HandlerAttribute'를 찾으면 당신은'ITraceAttribute'를 찾을 수 없을 것입니다. – BradleyDotNET

답변

0

C# 속성은 직접적으로 또는 간접적으로 클래스 System.Attribute에서 파생 된 클래스 여야합니다. 즉, 표준 도구를 사용하면 인터페이스를 속성으로 사용할 수 없습니다.

당신이 할 수있는 일은 Unity에서 필수 인스턴스를 생성하는 방법이있는 속성을 만드는 것입니다. 이 필터를 MVC 필터에 사용하는 경우 지금 시나리오를 확인하여 here으로 설정할 수 있습니다. 다른 경우에는 더 복잡 할 수도 있지만 서비스 로케이터를 사용하여 달성 할 수 있습니다.

관련 문제