出于内存优化的目的,我们一直在添加这些代码行:
public class Whatever: IDisposable
private bool disposed = false;
protected virtual void Dispose(bool disposing)
{
if (!this.disposed)
{
if (disposing)
{
context.Dispose();
}
}
this.disposed = true;
}
public void Dispose()
{
Dispose(true);
GC.SuppressFinalize(this);
}
对于我们的每一个存储库,然后也在为每个存储库更新测试。 我想知道,既然在编码中并不真正鼓励复制+粘贴,难道没有更好的方法来实现它吗?特别烦人,因为根据项目的不同,我们有 10-40 个存储库......
最佳答案
也许更简单 - 使用 context
本身来跟踪处置:
protected virtual void Dispose(bool disposing)
{
if (disposing) context?.Dispose();
context = null;
}
public void Dispose()
{
Dispose(true);
GC.SuppressFinalize(this);
}
请注意,我还认为您完全不太可能在此处涉及终结器(如果您这样做,那可能是一个大错误),所以老实说:您可以进一步简化:
public void Dispose()
{
context?.Dispose();
context = null;
}
关于c# - 处理对象时避免重复编码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/69221484/