从另一个类访问“类会话”

时间:2011-11-05 00:41:17

标签: c# class global-variables

首先:对不起,如果问题是错的,我真的不知道如何描述它,因为我不是编码术语的专家。

所以我在主课上写了这一行:

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

启动记录器的会话。然后我使用该会话在主类代码中的任何地方写入日志。 但我在另一堂课做肮脏的工作,所以我也想在那里登录。如何从该类访问相同的“日志会话”?

编写MainClassName.log不起作用。

2 个答案:

答案 0 :(得分:2)

不,MainClassName.log无法正常工作,因为您的变量是实例变量。它需要是一个静态变量......或者你必须有一个MainClassName的实例来访问实例变量。

但是,我个人建议你不要使用公共变量。我建议将私有变量用于"常量"以外的所有内容。 (其中可以是不可变类型的只读变量,而不仅仅是.NET认为是常量的东西) - 甚至在很多情况下也是如此。

我还建议使用类似log4net的内容 - 并且您可能会因为每个类使用单独的日志记录对象而受益,因此您可以轻松地打开或关闭来自不同类的日志(或者使用更严格的细粒度控制。)

答案 1 :(得分:2)

如果您想自己控制记录器,可以将其实现为单例,因此您始终可以从应用程序域中的任何位置获取相同的实例:http://msdn.microsoft.com/en-us/library/ff650316.aspx

当Trace对TraceSource进行了如此好的升级时,我很惊讶Jon Skeet使用log4net的建议。允许您在app.config / web.config中控制不同的输出机制,过滤器,源和详细程度。