首页 > 解决方案 > C#扩展Log4net的ILog接口现有方法

问题描述

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

我通常只是从一个类继承,覆盖我想要扩展的方法并使用我的新类,如下所示:

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

但是,由于我在通过 Logmanager 生成 Logger 时正在处理接口,因此我无法以这种方式扩展任何类。是否有另一种方法来扩展也适用于接口的方法?

标签: c#inheritancelog4net

解决方案


overwrite不是 中的关键字C#。使用override为了从基类重写此方法,需要标记 in 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();

推荐阅读