Использование лесозаготовительной системы Castle Windor в статических методах - PullRequest
0 голосов
/ 05 октября 2010

Мне не удалось найти много хорошей документации для средства регистрации Касла, но чтение здесь дает мне достаточно для работы. У меня есть один вопрос, однако, как вы получаете регистратор в ситуациях, когда вы не можете использовать свойства. Два примера, о которых я могу думать, находятся в статическом методе или в структуре.

Бонусные баллы за любую полезную документацию по этому объекту.

Ответы [ 2 ]

1 голос
/ 05 октября 2010

Просто получите регистратор из базовой реализации журнала, например, для log4net:

    private static readonly ILog logger = LogManager.GetLogger(typeof(MyClass));

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

Документы для ведения журнала находятся здесь .

0 голосов
/ 08 октября 2010

В настоящее время я не использую Castle или любой другой DI / IoC, поэтому я не могу комментировать действительность или нет, а также регистрировать статические данные или структуру ...

Сказав это,Похоже, что не должно быть слишком сложно войти из статического метода (в нестатическом классе).Это может быть глупо, но я полагаю, вы могли бы сделать что-то вроде этого:

public class MyClass
{
  private ILogger logger = NullLogger.Instance;
  private static ILogger staticLogger;

  public ILogger Logger 
  { 
    get
    {
      return logger;
    }
    set 
    {
      logger = value; 
      if (staticLogger == null)
      {
        staticLogger = value;
      }
    }
  }

  public void MyMethod()
  {
    logger.Info("Hello from instance method!");
  }

  public static void MyStaticMethod()
  {
    staticLogger.Info("Hello from static method!");
  }
}

Вероятно, нужно быть осторожным, чтобы не войти в систему со статическим регистратором до того, как будет введен настоящий регистратор.

...