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