2011-08-04 10 views
0

미안하지만 다른 정적 인터페이스에서는 사용하지 않는 제네릭에 대해 언급 할 수 있습니다.C의 정적 인터페이스 #

저는 정적 요소를 사용하는 싱글 톤을 피할 수는 있지만, 앱에 대한 빠르고 간단한 로거를 원했습니다. 나중에 다른 로깅 패키지로 변경할 수 있도록 인터페이스를 유지하고 싶습니다. 인터페이스가 나를 위해 (내가 틀릴 수도 있습니다) "외관"기능을 구현하는 방법입니다.

나는 뭔가를 내려다보고 있다는 느낌이 들었습니다. 올바른 방향으로 부드럽게 밀어 주면 대단히 감사하겠습니다. (조금 더 명확 해지기를 바랍니다)

public interface Ilogger 
{ 
    void Log(string data, out DateTime datetime, out string uid); 
} 

public class Logger : Ilogger 
{ 
    private static TraceSource AppTrace = new TraceSource("RD", SourceLevels.All); 

    static Logger() 
    { 
     AppTrace.Listeners.Clear(); 
     AppTrace.Listeners.Add(new DelimitedListTraceListener("RD.log")); 
    } 

    static void Log(string data, out DateTime datetime, out string uid) 
    { 
     datetime = DateTime.Now; 
     uid = Guid.NewGuid().ToString(); 

     AppTrace.TraceInformation(datetime + ";" + uid + ";" + data); 
    } 
} 
+1

달성하려는 목표 또는 "정적 인터페이스"가 작동하는 위치가 명확하지 않습니다. 문제를 명확히하기 위해 질문을 편집하십시오. –

+0

너희들은 방아쇠를 당긴다! 건배 –

답변

1

싱글 톤을 외관과 결합하고자합니다. 서비스 검색 자의 정렬. 즉 인터페이스와 동일한 메소드를 가진 싱글 톤을 생성 한 다음 인터페이스를 싱글 톤으로 정면에 할당합니다.

I've blogged about it.

+0

고마워요. Jgauffin, 제가 처음에 썼습니다. 하지만 방금 정적 메서드를 사용하면 상황을 단순화 할 것이라고 생각했습니다. 그래서 그것을 할 다른 (더 간단한) 방법이 없습니까? –

1

C#은 정적 상속 또는 정적 인터페이스 구현을 지원하지 않습니다. 정적 변수 입니다. 어느 쪽이든 싱글 톤 형식 일 것입니다. 싱글 톤을 사용하거나 더 나은 DI 컨테이너를 사용하여 로거 종속성을 주입하십시오.

관련 문제