2016-08-18 3 views
0

reduzieren Ich weiß, dass Parameter nicht zu statischen Konstruktor übergeben können. Aber ich bin mit dieser statischen Klasse mit Parametern daher initialisieren ich eine Variable Ich habe Zeilen kopieren für jede useage dieser Klasse Funktionenwie die Zeilenzahl mit übergebenen Parameter zu statischen Konstruktor

hier ist meine Logger Klasse (es verwendet log4net, aber es ist nicht für den Fall):

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); 

wie Sie denken, ich muss benutzerdefinierte "ClientIp" Feld für alle Arten von Protokollmethoden hinzufügen. aber ich möchte nicht wiederholen

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

Linie für jede Methode Ich wünsche ich den Konstruktor wie folgt bearbeiten:

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

aber ich kann nicht Parameter statischer Konstruktor übergeben .. einen Rat?

+0

nur eine statische Eigenschaft erstellen und festgelegt, dass am Anfang etwas wie 'public static string USERIP {get; set;}' –

+0

Woher kommt der USERIP Parameter kommen aus? Variiert es nicht jedes Mal, wenn es aufgerufen wird? – Chris

+0

@CallumLinington das ist, was ich jetzt versuchen, aber ein bisschen Ärger mit HttpContext.Current .. gib mir etwas Zeit – TyForHelpDude

Antwort

0

Eine Initialize Methode, die Sie nur einmal nennen: beim Start. Übergeben Sie die Variablen, die Sie nur einmal festlegen müssen. In allen nachfolgenden Aufrufen können Sie diese Werte wiederverwenden.

+0

Können Sie Ihren Beitrag näher erläutern? – TyForHelpDude

Verwandte Themen