Ответы пользователя по тегу C#
  • Логирование через синглтон?

    @veitmen
    Приветствую.
    LogManager.GetCurrentClassLogger()
    Использовать следует тогда, когда вы хотите использовать отдельный логгер для каждого класса и имя логгера будет совпадать с именем класса.
    Пример правильного использования:
    namespace MyNamespace
    {
      public class MyClass
      {
        private static Logger logger = LogManager.GetCurrentClassLogger();
      }
    }

    Далее всегда используете в своем классе для логирования logger.
    Подробнее тут: https://github.com/NLog/NLog/wiki/Tutorial#creatin...

    Если вы хотите сделать общий класс логирования и везде его использовать, то сделайте статический класс Logger, в нем реализуйте нужные вам методы логирования, которые будут использовать NLog. Т.е. примерно так:
    namespace MyNamespace
    {
      public static class MyClass
      {
        private static Logger logger = LogManager.GetLogger("MyCoolLogger");//или упомянутый GetCurrentClassLogger()
    
       public static void Debug(string message){
          logger.Log(message);
       }
    ...
      }
    }

    Собственно так используете:
    Logger.Debug("Hello!");
    Это простое решение, но я бы не советовал его использовать.

    Я бы советовал использовать отдельный логгер для каждого класса, это BestPractise. Это позволит вам проще ориентироваться в логах, т.к. каждый логгер будет указывать на свой класс.
    Ответ написан
    Комментировать
  • Как организовать логирование действий пользователя в программе?

    @veitmen
    Приветствую.

    Почитал ответы. Есть несколько комментариев.

    1. Log4Net отличная штука. Вам уже написали про него, его и берите. Ставьте через NuGet.
    2. Не думайте делать логирование в самой БД, Никаких триггеров и т.д. Вообще забудьте о том, что в БД можно что-то делать, кроме хранения данных. Есть только одна причина что-то делать в БД - это жесткое требование заказчика, которое нельзя изменить.
    3. Я не думаю, что Вам нужно записывать именно изменения контролов. Скорее Вам нужно записывать не просто изменения контролов, а изменения внесенные в хранилище данных. Т.к. пока я редактирую запись, это не надо логировать, надо логировать то, что я сохранил изменения.
    4. У вас есть слой бизнес логики, вот там и логируйте информацию о том, что происходит в системе.
    5. Есть еще хорошая вещь под названием аспектно-ориентированное программирование. Посмотрите что это, и как может помочь в создании системы логирования.
    Ответ написан
    4 комментария
  • Как в рантайме изменять лямбда выражение?

    @veitmen
    Я бы посоветовал посмотреть на DynamicLinq.

    Подробнее тут.
    Ответ написан
    Комментировать
  • Что должен уметь junior .net разработчик?

    @veitmen
    На самом деле все зависит от компании. В свое время, я устраивался на работу, именно на эту позицию. Я не знал .Net вообще. Компания требовала сделать тестовое задание, так вот это был мой первый опыт работы с .Net, до этого я работал только с Delphi.

    По моему мнению, если Вас берут на должность джуниора, то Вы должны знать то, как писать программы, без привязки к конкретному языку и платформе. Вы должны знать как решаются типовые задачи (будь то веб или декстопная разработка). Я бы взял в джуниоры того, кто вообще не знает .Net, но понимает саму суть написания программ, может решать задачи без привязки к .Net, кто может думать и обучаться. Конечно, знание .Net только плюс, но никак не минус.

    Но не забывайте, что главный фактор - это люди. Может быть они ждут на позицию джуниора того, кто все умеет и мало просит. :)
    Ответ написан
    Комментировать