我在静态类中调用静态方法时遇到问题。我希望有一个非常简单的使用NLog的日志包装器,我在其中调用Log.warn等:
using NLog;
using NLog.Config;
using NLog.Targets;
namespace Test.Logger
{
public static class Log
{
private static readonly ILogger logger = LogManager.GetCurrentClassLogger();
static Log()
{
logger = LogManager.GetCurrentClassLogger();
}
public static void Debug(string message)
{
logger.Log(LogLevel.Debug, message);
}
}
}
然而,当我使用上面的类引用一个项目时,类本身是可见的,但Debug或任何其他方法不再可见。我已经研究了实例的使用,但是更喜欢它不需要实例。同样地,我研究了静态类的潜在范围问题,但是日志类实际上是可见的,只是Log类中包含的公共静态方法不是。
这就是我试图调用方法的方法:
using System;
using System.Collections.Generic;
using System.Configuration;
using System.Data;
using System.Linq;
using System.Threading.Tasks;
using System.Windows;
using Test.Logger;
namespace WpfTestApp
{
/// <summary>
/// Interaction logic for App.xaml
/// </summary>
public partial class App : Application
{
Test.Logger.Log.Debug("test message");
//this method cannot be found, however Test.Logger.Log can
}
}
答案 0 :(得分:1)
您似乎在类定义中调用Log.Debug
方法。哪个(有趣的是对我来说)不起作用,你需要在类方法中移动它:
class Program
{
//doesn't work
Log.Debug("");
static void Main(string[] args)
{
//works
Log.Debug("Hello World!");
}
}
希望这有帮助