c# - C#扩展Log4net的ILog接口现有方法
问题描述
我目前正在尝试扩展 Ilog.Error 方法的行为
我通常只是从一个类继承,覆盖我想要扩展的方法并使用我的新类,如下所示:
public class MyLogger:Logger
{
overwrite Error(..)
{
base.Error(..);
Mycode(..);
}
}
但是,由于我在通过 Logmanager 生成 Logger 时正在处理接口,因此我无法以这种方式扩展任何类。是否有另一种方法来扩展也适用于接口的方法?
解决方案
overwrite
不是 中的关键字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();
推荐阅读
- flutter - 条件为假时如何删除列表视图项?
- artificial-intelligence - 人工智能中的事件是什么意思
- python - Python 重定向运算符文件名
- javascript - Change background-color with javascript, with same button no jquery or other
- java - 尝试在 IntelliJ 中运行 maven javafx-archetype-simple 时出错
- python - 调用时 Numba CUDA ctypes.ArgumentError
- c# - 如何使用 Xamarin.iOS 将广告内容分配给 stacklayout
- c# - 从对象 Checksphere 中淡化 UI 文本并进行交互
- javascript - 使用 JS 检测移动设备中的关闭选项卡/浏览器
- kotlin - Ktor自定义json对象反序列化