mHe*_*pMe 2 .net c# inheritance
我正在使用继承并试图了解使用IDisposable的最佳方法.下面是我的基类的一个例子.
我明白,如果我有一个继承MyBase类的类(允许在MyChild中调用),即使MyChild没有实现IDisposable,如果MyChild初始化,则会执行Dispose方法(相信我的说法是正确的)如果使用的话如下,
using(MyChild chl = new MyChild) {// some code};
Run Code Online (Sandbox Code Playgroud)
我想知道的是,我在MyChild类中有一个对象,我想确保它被处理掉.我是否必须实现IDisposable接口并且具有与MyBase类中几乎相同的代码,或者我可以使用MyBase类中的代码吗?我猜这就是为什么在MyBase类中有一个受保护的虚拟Dispose方法?
我的基础班
public class MyBase : IDisposable
{
// variables & methods declared here etc
public void Dispose()
{
Dispose(true);
}
protected virtual void Dispose(bool disposing)
{
if (disposing)
{
if (myObj != null) releaseObject(myObj);
}
}
private static void releaseObject(object obj)
{
System.Runtime.InteropServices.Marshal.ReleaseComObject(obj);
}
}
Run Code Online (Sandbox Code Playgroud)
这void Dispose(bool disposing)是protected virtual有原因的.你打算覆盖它(并调用基本版本).
public class MyChild : MyBase
{
protected override void Dispose(bool disposing)
{
if (disposing)
{
// Dispose Child's objects
}
base.Dispose(disposing);
}
}
Run Code Online (Sandbox Code Playgroud)