为我的自定义对象提供 ToString()

Cap*_*mic 3 .net c# string

我的班级有很多很多的属性。在我的程序中,我必须大量记录。通常我必须手动构建日志字符串,例如

string log = "Current state of object:" + "Property1" + myObj.Property1 + ...
Run Code Online (Sandbox Code Playgroud)
  1. 我只是想如果覆盖ToString并提供我需要的任何日志记录会怎样。这被认为是良好的做法吗?
  2. 如何提供格式化程序控制字符串?假设我希望 ToString 以两种模式运行,一种是完整输出所有属性,另一种是仅输出相关属性的轻型版本

类似 MyObj.ToString("full") 和 MyObj.ToString("basic")

Ode*_*ded 5

ToString只要您提供良好的信息,覆盖确实是一个很好的做法。

至于具有不同类型的ToString- 这是可能的,但是您不会覆盖ToString,而是提供重载(任何使用类都需要了解)。

我会将版本实现lightweight为覆盖,并VerboseToString为完整的属性集创建一个函数。

如果您有许多这样的对象,您可以创建一个IVerboseString带有方法的接口VerboseToString并在您的对象中实现它。这样您就可以在日志记录中简单地使用接口引用。