如何通过将参数传递给静态构造函数来减少行号

时间:2016-08-18 12:33:50

标签: c# constructor

我知道参数不能传递给静态构造函数。但我正在使用带有参数的静态类,因此我初始化一个变量,我必须为这个类函数的每个用法重复行

这是我的记录器类(它使用log4net,但不是这样):

public static class Logger
    {
        private static ILog log  {get; set;}
        static Logger()
        {
            log = LogManager.GetLogger(System.Reflection.MethodBase.GetCurrentMethod().DeclaringType);
        }
        public static void Error(object msg, string userip)
        {

            log4net.LogicalThreadContext.Properties["ClientIp"] = userip;
            if (log.IsErrorEnabled)
            {
                log.Error(msg);
            }
        }
        public static void Error(object msg, string userip, Exception ex)
        {
            log4net.LogicalThreadContext.Properties["ClientIp"] = userip;

            if (log.IsErrorEnabled)
            {
                log.Error(msg, ex);

因为您认为我必须添加自定义" ClientIp"各种日志方法的字段。但我不想重复

  

log4net.LogicalThreadContext.Properties [" ClientIp"] = userip;

每种方法的行 我希望我可以像这样编辑构造函数:

static Logger()
            {
                log4net.LogicalThreadContext.Properties["ClientIp"] = userip;
                log = LogManager.GetLogger(System.Reflection.MethodBase.GetCurrentMethod().DeclaringType);
            }

但我不能将参数传递给静态构造函数..任何建议?

1 个答案:

答案 0 :(得分:0)

创建一个Initialize方法,您只能调用一次:启动时。传入您只需设置一次的变量。在所有后续调用中,您可以重用这些值。