10

I am trying to find if a class has destructors using reflection. I do see methods to get constructors in System.Reflection. Is there a way to find if a class has defined custom destructors in C#?

4

2 回答 2

14

似乎调用了析构函数方法Finalize()。所有对象都有这个,因此您想通过尝试使用DeclaredOnly绑定标志来检查它是否在该对象上显式定义。它也是私有且非静态的,因此您还需要其他两个标志。

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

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

于 2013-10-24T00:16:51.263 回答
1

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

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

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

于 2013-10-24T00:14:25.550 回答