C# 扩展 Log4net 的 ILog 接口的现有方法

C# extending existing Method of the ILog Interface of Log4net

我目前正在尝试扩展 Ilog.Error 方法的行为

我通常只是从 class 继承,覆盖我想扩展的方法并改用我的新 class,像这样:

public class MyLogger:Logger
{
    overwrite Error(..)
    {
        base.Error(..);
        Mycode(..);
    }
}

但是,由于我在通过 Logmanager 生成 Logger 时处理接口,因此 class 我无法以这种方式扩展。还有另一种方法可以扩展也适用于接口的方法吗?

overwrite 不是 C# 中的关键字。使用 override 为了从基础 class 覆盖此方法,需要标记为 virtual,这意味着它可以被覆盖或 abstract 这意味着它 必须 被覆盖。有关更多参考,请参见此处:

https://docs.microsoft.com/en-us/dotnet/csharp/programming-guide/classes-and-structs/inheritance#abstract-and-virtual-methods

编辑:

由于一些评论指出您应该创建一个扩展方法,您可以像这样:

public static class Log4NetExtension 
{    
   public static void LogError(this Logger logger) 
   {
     logger.Error(..);
     //your code
   }
}

并像这样使用它:

var logger = new Logger();
logger.LogError();