覆盖匿名对象的ToString()实现

Use*_*rol 7 c#

        var sample = new
        {
            Time = DateTime.Now,
            Name = "Hello"
        };
        Trace.TraceInformation("{0}", sample);
Run Code Online (Sandbox Code Playgroud)

输出为

ProcessInvocation86.exe信息:0:{Time = 04.11.2012 22:07:52,Name = Hello}

我想在我的应用程序中使用不同的格式.有没有办法在C#中更改匿名对象的ToString()实现?也许每个AppDomain或某些静态字段?

Ser*_*kiy 7

不,你不能做到这一点- ToString,Equals以及GetHashCode具有由框架提供的默认实现.要覆盖此功能,您应该从您的匿名类型继承,这是不可能的.

使用String.Format以获得所需的输出.

  • 我将补充说,如果你需要这种功能,那么你应该定义一个真正的类并相应地扩展它. (3认同)