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

本文关键字:参数 何通过 静态 构造函数 | 更新日期: 2023-09-27 18:03:01

我知道参数不能传递给静态构造函数。但是我使用这个带参数的静态类因此我初始化了一个变量每次使用这个类函数都要重复几行

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

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。属性["ClientIp"] = userip;

行我希望我可以这样编辑构造函数:

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

,但我不能传递参数给静态构造函数。有什么建议吗?

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

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