为什么在C#中使用Dispose时出现错误

问题描述

我正在尝试处置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()

Here's an online demo.

此外,即使该代码已经编译,您在将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方法。

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...