C# 在C中使用Dispose()时出错的原因#

C# 在C中使用Dispose()时出错的原因#,c#,dispose,C#,Dispose,我正试图在c#中处理该对象。但是当我使用Dispose()方法时,我得到了一个错误。我在下面提到了我的代码 试用代码: public class ParentModel : ParentModelBase, IDisposable { protected override void OnDispose() { createdObject.PageMaximizedViewModel = null; createdOb

我正试图在
c#
中处理该对象。但是当我使用
Dispose()
方法时,我得到了一个错误。我在下面提到了我的代码

试用代码:

public class ParentModel : ParentModelBase, IDisposable
  {

     protected override void OnDispose()
        {
            createdObject.PageMaximizedViewModel = null;
            createdObject = null;
            createdObject.Dispose();
            base.OnDispose();
        }
  }
错误:

“ParentCreatedClass”不包含“Dispose”的定义,并且找不到接受“ParentCreatedClass”类型的第一个参数的可访问扩展方法“Dispose”(是否缺少using指令或程序集引用?) 无法解析符号“Dispose”


我在这几个小时里苦苦挣扎。如何解决此问题?

ParentCreatedClass
没有公共的
Dispose()
方法-不能调用不存在的方法

显然,
ParentCreatedClass
要么没有实现
IDisposable
接口,要么显式实现,这意味着您必须首先将其强制转换为
IDisposable
,然后才能对其调用
Dispose()
,因此请尝试以下操作:

protected override void OnDispose()
{
    createdObject.PageMaximizedViewModel = null;
    ((IDisposable)createdObject).Dispose(); 
    base.OnDispose();
}


此外,即使此代码已经编译,在将
null
分配给引用后调用
.Dispose()
(或任何其他方法)也会导致
NullReferenceException
-删除
createdObject=null代码中的行。它没用。

ParentCreatedClass
应该实现IDisposable,这样您就可以调用
createdObject.Dispose()

有关如何正确实施它,请参见此

类似地,
ParentModel
类应该按照链接中的描述正确地实现
IDisposable


ParentModel
应具有
public void Dispose(),在调用
createdObject.Dispose()
之前,在
OnDispose
方法中设置
createdObject=null
。因此,即使您修复了上述编译时错误,您也需要解决这个潜在的运行时问题—我现在遇到这个错误<代码>此类型有一个已释放但仍未GCed的实例。调查下面的实例以了解更多信息。
如何克服此问题。