如何从C#确定性地处理受管理的C/C++LI对象?

我在C/C++LI程序集中有一个托管对象.作为C/C++LI,它通过“析构函数”实现了Disposable模式(是的,我知道它与标准C析构函数不一样).从C/C++LI,我只是删除对象.但是,我在C#类中使用该对象作为成员变量.

从我的C#类,当我完成使用它之后,我想调用相当于C/C++LI对象上的Dispose()方法.由于它是(并且必须)该类的成员变量,因此使用using()块是不成问题的.据我所知,没有任何公开的方法来直接,确定性地处理来自C/C++LI以外的语言的资源.我该如何做到这一点?

最佳答案
C/C++LI析构函数的语法自动实现IDisposable,但它的方式与C#的explicit interface implementation类似.这意味着您必须转换为IDisposable才能访问Dispose方法:

((IDisposable)obj).Dispose();

转载注明原文:如何从C#确定性地处理受管理的C/C++LI对象? - 代码日志