Доступ к "сеансу класса" из другого класса - PullRequest
0 голосов
/ 05 ноября 2011

Во-первых: извините, если вопрос неправильный, я не знаю, как его описать, поскольку я не профессионал в вопросах кодирования.

Итак, я написал эту строку в основном классе:

    public Log log = new Log("program.log");

Который начинает сеанс моего регистратора. Затем я использую этот сеанс для записи в журнал везде в коде моего основного класса. Но я делаю грязную работу в другом классе, поэтому я тоже хочу туда зайти. Как мне получить доступ к тому же «сеансу журнала» из этого класса?

Запись MainClassName.log не работает.

Ответы [ 2 ]

2 голосов
/ 05 ноября 2011

Если вы хотите управлять регистратором самостоятельно, вы можете реализовать его как одноэлементный, чтобы вы всегда получали один и тот же экземпляр из любой точки вашего домена приложения: http://msdn.microsoft.com/en-us/library/ff650316.aspx

Я удивлен, что Джон Скит советовал использовать log4net, когда Trace получил такое хорошее обновление до TraceSource. Позволяет вам управлять различными механизмами вывода, фильтрами, источниками и подробностями в вашем app.config / web.config.

2 голосов
/ 05 ноября 2011

Нет, MainClassName.log не будет работать, потому что ваша переменная - экземпляр . Это должна быть статическая переменная ... или вам потребуется экземпляр MainClassName, через который можно получить доступ к переменной экземпляра.

Однако лично я бы посоветовал вам вообще не использовать публичные переменные. Я бы предложил использовать закрытые переменные для всего, кроме «констант» (где это может быть переменная только для чтения неизменяемого типа, а не просто то, что .NET считает константой) - и даже во многих случаях.

Я бы также предложил использовать что-то вроде log4net - и вы, вероятно, выиграете от использования отдельного объекта регистрации для каждого класса, чтобы вы могли легко включать или выключать журналы из разных классов ( или используйте еще более мелкозернистый контроль с серьезностью).

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