问题描述
我正在尝试处置c#
中的对象。但是,当我使用dispose()
方法时,我得到了一个错误。我在下面提到了我尝试过的代码。
尝试的代码:
public class ParentModel : ParentModelBase,Idisposable
{
protected override void Ondispose()
{
createdobject.PageMaximizedviewmodel = null;
createdobject = null;
createdobject.dispose();
base.Ondispose();
}
}
错误:
“ ParentCreatedClass”不包含“ dispose”的定义,并且找不到可以接受的扩展方法“ dispose”接受类型为“ ParentCreatedClass”的第一个参数(是否缺少using指令或程序集引用?) 无法解析符号“处置”
这些时间我很挣扎。我该如何解决这个问题?
解决方法
ParentCreatedClass
根本没有公共的Dispose()
方法-您不能调用不存在的方法...。
显然,ParentCreatedClass
要么没有实现IDisposable
接口,要么显式实现了它,这意味着您必须先将其强制转换为IDisposable
才能调用{{1 }}上-因此请尝试:
Dispose()
此外,即使该代码已经编译,您在将protected override void OnDispose()
{
createdObject.PageMaximizedViewModel = null;
((IDisposable)createdObject).Dispose();
base.OnDispose();
}
分配给引用之后也会调用.Dispose()
-(或与此有关的任何其他方法)-从您的代码中删除null
行。这没用。
ParentCreatedClass
应该实现IDisposable,以便您可以调用createdObject.Dispose();
请参见此link,了解如何正确实施。
类似地,ParentModel
类应如链接中所述正确实现IDisposable
。
ParentModel
应该具有public void Dispose(){..}
界面中定义的IDisposable
方法。