m0d*_*ixx 2 c# using properties readonly
我在重构某些代码时遇到了这个问题,这在很大程度上取决于Disposable模式。
我确实有一个只读字段DbContext,正在构造函数中对其进行初始化。现在,我想知道是否可以将字段传递到using块中,以使其以正确的方式处理。还是我必须摆脱字段和初始化才能在每个using块中对其进行初始化
protected readonly DbContext _context;
public Repository(DbContext context)
{
_context = context;
}
public Task<T> GetAsync(Guid id)
{
using (_context)
{
return _context.Set<T>().FindAsync(new CancellationToken(), id);
}
}
Run Code Online (Sandbox Code Playgroud)
我希望以正确的方式应用Dispose模式
我看到两个潜在的问题:
using
块时,将处置对象。如果然后尝试重用它,则可能会InvalidOperationException
抛出某处。MemoryStream
-处置它时,MemoryStream
不会取消引用其内部byte[]
缓冲区。这意味着,除非您取消引用流本身,否则无法收集数组,并且实际上是内存泄漏。因此,从我的角度来看,最好在using
语句中创建一个新对象,因为它会自动为您处理该对象并取消引用它以便收集它。
可能的解决方案是改为注入Factory对象,并使用其factory方法在using
块的开始处创建一次性对象。
归档时间: |
|
查看次数: |
67 次 |
最近记录: |