我必须将一些Dispose代码添加到一个继承自已实现IDisposable的类的类中,所以我尝试重写Dispose方法,但是我没有disposValue,因为它被声明为private。
如何添加新的Dispose语句?
Protected Overridable Sub Dispose(ByVal disposing As Boolean)
If Not disposedValue Then
If disposing Then
''# ...
End If
End If
disposedValue = True
End Sub
提前致谢!
EXTENDED INFO:我认为我应该在继承者的基类中实现相同的逻辑。我是对的吗?
更多信息:当您声明某个类实现IDisposable时,我正在使用Vb.Net自动写入的snipet。
答案 0 :(得分:2)
您可以在派生类中创建单独的disposedValue
字段
但是,您应该将其命名为isDisposed
。
请注意,如果您两次调用Dispose
,FCL中的所有类都不会执行任何操作,因此删除该逻辑并多次处置不一定有任何问题。显然,这取决于你在Dispose
中所做的事情;你应该检查一下。
请务必致电MyBase.Dispose(disposing)
。
答案 1 :(得分:0)
不要尝试复制基类逻辑,而是调用MyBase.Dispose(disposing)。
答案 2 :(得分:-1)
嗯,它是私有而不是受保护的事实可能意味着你不应该这样做。但如果你坚持,你可以使用反射。是的,这可能是最糟糕的方式:
//(System.Reflection.BindingFlags...)
this.GetType().GetField("_privateVarName", BindingFlags.NonPublic | BindingFlags.Instance).GetValue(this);