C#Reflection-查找类是否定义了析构函数

时间:2013-10-24 00:03:15

标签: c# reflection destructor

我试图找出一个类是否有使用反射的析构函数。我确实看到了在System.Reflection中获取构造函数的方法。有没有办法找到一个类是否在C#中定义了自定义析构函数?

2 个答案:

答案 0 :(得分:10)

析构函数方法似乎被称为Finalize()。所有对象都有这个,所以你想通过尝试使用DeclaredOnly绑定标志来检查它是否在该对象上显式定义。它也是私有的和非静态的,所以你也需要另外两个标志。

myObj.GetMethod("Finalize",
                BindingFlags.NonPublic |
                BindingFlags.Instance |
                BindingFlags.DeclaredOnly)

如果对象没有定义的析构函数,则返回null。

答案 1 :(得分:1)

检查反射是否存在在相关实例上定义的Finalize。

~ClassName语法被转换为对象的Finalize()方法。

所有.NET对象都有一个在System.Object级别定义的Finalize方法。