use*_*348 1 c# oop inheritance dispose
我有这个代码.
一个基类,用于创建上下文的新实例.
public class Base
{
private Entities context;
public Base()
{
context = new Entities();
}
}
Run Code Online (Sandbox Code Playgroud)
而且比从这个类继承的类.
public class SomeService : Base
{
public Gallery Get(int id)
{
return context.GallerySet.FirstOrDefault(g => g.id == id);
}
}
Run Code Online (Sandbox Code Playgroud)
问题是,如何处理上下文对象?我在考虑基类中的析构函数,我只是调用上下文对象的dispose方法.
~Base()
{
context.Dispose();
}
Run Code Online (Sandbox Code Playgroud)
会这样够吗?或者还有其他方法来处理上下文对象吗?
您的Base类应该实现IDisposable而不是终结器.当您可以直接访问非托管资源时(例如,表示Windows句柄的IntPtr),您应该只有终结器.
但是,我会尝试设计一个不涉及此问题的设计.在可能的情况下,我尽量避免使用需要处理的成员变量 - 我倾向于在方法中获取资源,将这些资源传递给其他方法,然后在获取它们的同一方法中处理它们.IDisposable您拥有的实现越少,您可能需要管理的资源生命周期复杂性就越低.显然有时它是不可避免的......
| 归档时间: |
|
| 查看次数: |
93 次 |
| 最近记录: |