我正在尝试在代码中记录有关某些对象和类的状态的信息。并非所有类或库都使用序列化实现。所以我在属性上使用Reflection来写出状态的XML文档。但是,我遇到了一些挑战,例如内置类(即字符串,日期时间,数字等)等一些对象具有ToString函数,该函数以有意义的方式打印出类的值。但是对于其他类,调用ToString只是使用继承的基ToString来吐出对象类型的名称(例如Dictionary)。在这种情况下,我想以递归方式检查该类中的属性。
因此,如果有人可以帮我反思,要么弄清楚是否在属性上实现了ToString,我正在查看这不是基本方法或指出使用GetValue检索集合属性的正确方法我很感激。
Ĵ
答案 0 :(得分:10)
确定方法是否已覆盖默认.ToString()
支票MethodInfo.DeclaringType
,如下所示:
void Main()
{
Console.WriteLine(typeof(MyClass).GetMethod("ToString").DeclaringType != typeof(object));
Console.WriteLine(typeof(MyOtherClass).GetMethod("ToString").DeclaringType != typeof(object));
}
class MyClass
{
public override string ToString() { return ""; }
}
class MyOtherClass {
}
打印出来:
True
False