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

C#扩展Log4net的ILog接口的现有方法,c#,inheritance,log4net,C#,Inheritance,Log4net,我目前正在尝试扩展Ilog.Error方法的行为 我通常只是从类继承,覆盖我想要扩展的方法,然后使用我的新类,如下所示: public class MyLogger:Logger { overwrite Error(..) { base.Error(..); Mycode(..); } } 然而,由于我在通过Logmanager生成Logger时处理接口,所以没有任何类可以以这种方式扩展。是否有其他方法可以扩展同样适用于接口的方法?覆盖不

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

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

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

然而,由于我在通过Logmanager生成Logger时处理接口,所以没有任何类可以以这种方式扩展。是否有其他方法可以扩展同样适用于接口的方法?

覆盖
不是
C.
中的关键字。使用
override
以便从基类重写此方法,In需要标记为
virtual
,这意味着它可以被重写,或者
abstract
这意味着它必须被重写。有关更多参考资料,请参见此处:

编辑:

由于一些注释指出您应该创建一个扩展方法,您可以这样对其进行修改:

public static class Log4NetExtension 
{    
   public static void LogError(this Logger logger) 
   {
     logger.Error(..);
     //your code
   }
}
var logger = new Logger();
logger.LogError();
然后像这样使用它:

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

我想你可以使用。请尝试使用扩展方法,不要覆盖主错误方法。你可以使用任何你想要扩展的行为来扩展Ilogger接口。感谢你在扩展方法方向上的推动,这就是我所寻找的。