статические интерфейсы в c # - PullRequest
0 голосов
/ 04 августа 2011

Извините, возможно, это дубликат, но в другом статическом интерфейсе упоминаются непатентованные элементы, которые я не использую.

Мне нужен быстрый и простой регистратор для моего приложения, хотя я мог избежать одиночного использования статического элемента,Я хотел бы сохранить интерфейс, чтобы позже я мог перейти на другой пакет регистрации.Интерфейс для меня (я могу ошибаться) способ реализовать функцию «фасада».

У меня такое чувство, что я что-то упускаю.Нежный толчок в правильном направлении будет принята с благодарностью.(Надеюсь, это немного яснее)

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);
    }
}

Ответы [ 2 ]

1 голос
/ 04 августа 2011

C # не поддерживает статическое наследование или реализацию статического интерфейса.статические переменные являются просто формой синглтона в любом случае - просто используйте Singleton или лучше используйте контейнер DI для внедрения зависимости регистратора.

1 голос
/ 04 августа 2011

Вы хотите совместить синглтон с фасадом.Вроде сервисный локатор.то есть создайте синглтон, который получил те же методы, что и ваш интерфейс, а затем назначьте интерфейс для фасада как синглтон.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...