我试图找出一个类是否有使用反射的析构函数。我确实看到了在System.Reflection中获取构造函数的方法。有没有办法找到一个类是否在C#中定义了自定义析构函数?
答案 0 :(得分:10)
析构函数方法似乎被称为Finalize()
。所有对象都有这个,所以你想通过尝试使用DeclaredOnly
绑定标志来检查它是否在该对象上显式定义。它也是私有的和非静态的,所以你也需要另外两个标志。
myObj.GetMethod("Finalize",
BindingFlags.NonPublic |
BindingFlags.Instance |
BindingFlags.DeclaredOnly)
如果对象没有定义的析构函数,则返回null。
答案 1 :(得分:1)
检查反射是否存在在相关实例上定义的Finalize。
~ClassName语法被转换为对象的Finalize()方法。
所有.NET对象都有一个在System.Object级别定义的Finalize方法。