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#?
问问题
1109 次
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 回答