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
这意味着它 必须 被覆盖。有关更多参考,请参见此处:
编辑:
由于一些评论指出您应该创建一个扩展方法,您可以像这样:
public static class Log4NetExtension
{
public static void LogError(this Logger logger)
{
logger.Error(..);
//your code
}
}
并像这样使用它:
var logger = new Logger();
logger.LogError();
我目前正在尝试扩展 Ilog.Error 方法的行为
我通常只是从 class 继承,覆盖我想扩展的方法并改用我的新 class,像这样:
public class MyLogger:Logger
{
overwrite Error(..)
{
base.Error(..);
Mycode(..);
}
}
但是,由于我在通过 Logmanager 生成 Logger 时处理接口,因此 class 我无法以这种方式扩展。还有另一种方法可以扩展也适用于接口的方法吗?
overwrite
不是 C#
中的关键字。使用 override
为了从基础 class 覆盖此方法,需要标记为 virtual
,这意味着它可以被覆盖或 abstract
这意味着它 必须 被覆盖。有关更多参考,请参见此处:
编辑:
由于一些评论指出您应该创建一个扩展方法,您可以像这样:
public static class Log4NetExtension
{
public static void LogError(this Logger logger)
{
logger.Error(..);
//your code
}
}
并像这样使用它:
var logger = new Logger();
logger.LogError();