加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

有没有办法告诉对象是否在c#中显式实现了ToString

发布时间:2020-12-15 08:46:35 所属栏目:百科 来源:网络整理
导读:我试图在我的代码中记录有关某些对象和类的状态的信息.并非所有类或库都使用序列化实现.所以我在属性上使用Reflection来写出状态的 XML文档.但是,我遇到了一些挑战,例如内置类(即字符串,日期时间,数字等)等一些对象具有ToString函数,该函数以有意义的方式打
我试图在我的代码中记录有关某些对象和类的状态的信息.并非所有类或库都使用序列化实现.所以我在属性上使用Reflection来写出状态的 XML文档.但是,我遇到了一些挑战,例如内置类(即字符串,日期时间,数字等)等一些对象具有ToString函数,该函数以有意义的方式打印出类的值.但是对于其他类,调用ToString只是使用继承的基ToString来吐出对象类型的名称(例如Dictionary).在这种情况下,我想以递归方式检查该类中的属性.

因此,如果任何人都可以帮我反思要么弄清楚是否在属性上实现了ToString我正在看这不是基本方法或指出使用GetValue检索集合属性的正确方法我会很感激它.

?

解决方法

要确定方法是否已覆盖默认的.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

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读