如何在C#中重写Logger.Error方法?

如何在C#中重写Logger.Error方法?,c#,interface,polymorphism,overriding,C#,Interface,Polymorphism,Overriding,我试图在Csfbs类的OverrideLogErrorMethod中调用overidden错误方法,如下所示 namespace IQCs { public class Csfbs { public static string OverrideLogErrorMethod(string Name) { ILogger Logger = LogManager.GetLogger(LOGFILENAME); try { /*Somecode*/ if (N

我试图在Csfbs类的OverrideLogErrorMethod中调用overidden错误方法,如下所示

namespace IQCs
{
public class Csfbs
{
 public static string OverrideLogErrorMethod(string Name)
 {
   ILogger Logger = LogManager.GetLogger(LOGFILENAME);
   try
   {
     /*Somecode*/
      if (Name != "Name")
         throw new Exception();
      else
         return "success";
    }
    catch 
    {           
       Logger.Error("Overrided logger.error method");//here I want to call overriden error method
       return "override Success";
     }
  }
}

 public abstract class CustomLoggerClass: ILogger //Implementing Ilogger interface which implements error method
 {
    public abstract void Error(string message);
 }
public class CUs : CustomLoggerClass
{
   //Overriden error method in CUs
    public override void Error(string message)
    {           
        string messageInfo = "Control is in overrided Logger.error method";
        ILogger Logger = LogManager.GetLogger(LOGFILENAME);
        Logger.Info(messageInfo);
    }
 }
}

控件不会转到重写的错误方法,代码中的哪些更改将使控件转到重写的错误方法?我不想更改该方法的名称,因为该名称在许多地方都有使用

创建自己的扩展方法

它必须在静态类中定义,并且是静态方法。例如

定义:

public static class Log4NetExtensions
{
    public static void MySpecialError(this Log log, string details, string message, Exception exception)
    {
        //Do something with parameters
    }
}
使用:


您还可以实现自己版本的ILogger(在一定程度上可以实现),并通过DI配置交换注入的功能


因此,与调用getLogger不同,您将注入包含您自己逻辑的稍微不同的实现。此外,在分离关注点方面,这是一种更好的方法。

Logmanager.GetLogger是否返回CUs实例?它需要为您的代码工作
Log.MySpecialError(details, message, ex);