我的班级有很多很多的属性。在我的程序中,我必须大量记录。通常我必须手动构建日志字符串,例如
string log = "Current state of object:" + "Property1" + myObj.Property1 + ...
Run Code Online (Sandbox Code Playgroud)
ToString并提供我需要的任何日志记录会怎样。这被认为是良好的做法吗?类似 MyObj.ToString("full") 和 MyObj.ToString("basic")
ToString只要您提供良好的信息,覆盖确实是一个很好的做法。
至于具有不同类型的ToString- 这是可能的,但是您不会覆盖ToString,而是提供重载(任何使用类都需要了解)。
我会将版本实现lightweight为覆盖,并VerboseToString为完整的属性集创建一个函数。
如果您有许多这样的对象,您可以创建一个IVerboseString带有方法的接口VerboseToString并在您的对象中实现它。这样您就可以在日志记录中简单地使用接口引用。