如何解决如何从appender中删除最后一个过滤器?
如何在运行时从 appender 中删除最后一个过滤器?我可以清除过滤器,我可以添加过滤器,但是这两种方法都会改变私有属性 m_tailFilter
,因此当我将上一个过滤器之前的 Next 属性设置为 null 时,之后添加新过滤器不起作用。
appender.AddFilter(filter); // works fine
appender.ClearFilters(); // works fine and adding filter again also works
var lastFilter = appender.FilterHead; // save previously last filter
appender.AddFilter(filter); // works fine
filter.Next = null; // works fine,i.e. removes the last filter
appender.AddFilter(filter); // doesn't work,i.e. this filter is ignored
解决方法
我会在这里发布我带来的东西。我不喜欢它,感觉很笨拙,我认为应该有更好的方法,但它似乎适用于我的场景。
filter.Next = null;
var f = appender.FilterHead;
appender.ClearFilters();
appender.AddFilter(f);
因此,从链中移除最后一个过滤器后,清除所有过滤器并再次添加头部,这样就正确设置了尾部。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。