2011-11-05 131 views
0

第一:如果问题不对,我真的不知道如何描述它,因为我不是编码专业人员。从另一个班级访问“班级会话”

所以我在主类写了这行:

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

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

写入MainClassName.log不起作用。

+1

您可以将'log'作为参数传递给其他类的方法吗? 'obj.doSomething(ref log,[other args]);'(在jonskeet <_ <下无法发布答案) –

回答

2

不,MainClassName.log不会工作,因为您的变量是实例变量。这将需要是一个静态变量...或者你必须有一个MainClassName实例通过它来访问实例变量。

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

我还建议使用类似log4net的东西 - 并且您可能会从每个类使用一个单独的日志记录对象中受益,以便您可以轻松地从不同类开启或关闭日志(或者使用更加精细严格控制严重程度)。

+0

现在创建主类的实例是最简单的解决方案,谢谢您提醒我! – fgblomqvist

2

如果你想自己控制记录器,你可以实现它作为一个单身,所以你总是来自世界各地得到相同的情况下在你的应用程序域:http://msdn.microsoft.com/en-us/library/ff650316.aspx

我使用log4net的时候惊讶乔恩斯基特建议Trace已经对TraceSource进行了很好的升级。允许您在app.config/web.config中控制不同的输出机制,过滤器,来源和详细程度。

相关问题