在使用一些现有库时,有些接口并没有继承IDisposable接口,因此无法直接调用Dispose释放对资源的占用,那么怎么办呢?

以Serilog为例,在早期版本中ILogger没有继承IDisposable,在创建一个logger后,会一直占用这个文件。

var logger = new LoggerConfiguration().WriteTo.File("file path").MinimumLevel.Information().CreateLogger();

如果对该文件进行额外的操作,是不允许的,那么就需要先临时释放对它的占用。

下面一行代码就可以解决

((IDisposable)logger).Dispose();