Skip to main content
 首页 » 编程设计

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

2026年04月16日64kenshinobiy

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

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

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

但是,由于我在通过 Logmanager 生成记录器时处理接口(interface),因此没有可以以这种方式扩展的类。是否有另一种方法可以扩展也适用于接口(interface)的方法?

请您参考如下方法:

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

https://learn.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();