这是主观的,我不敢说有任何最佳实践,但是:
- 您是否发现 DebuggerDisplayAttribute 在某些类型的对象(即自定义数据结构)上比其他对象更有用?
到目前为止,最常见的用途是表示业务实体的类型——我通常会显示 ID + 名称。还有将存储在应用程序集合中的任何类型。
除此之外,每当我发现自己经常在调试器中搜索属性时,我都会添加它。
2.您是在公共类型、内部类型还是两者上定义它?
两个都。
3.您通常会将它添加到初始实现中,还是等待测试人员/用户请求它?
测试人员/用户永远不会看到它——它只在调试时使用。
4.什么时候定义DebuggerDisplayAttribute更好,什么时候重写.ToString()更有意义?
当您需要运行时的表示时,覆盖 ToString() ,用于日志记录或特定于应用程序的目的。如果您只需要它进行调试,请使用 DebuggerDisplayAttribute。
5.你有关于你在属性中暴露多少数据的指导方针,或者对包含的计算量有限制吗?
由于它不在运行时使用,唯一的限制是它应该足够快而不会妨碍调试体验(尤其是在为集合元素多次调用时)。
您不需要像使用运行时日志记录那样担心暴露敏感数据(例如通过覆盖 .ToString),因为无论如何这些数据在调试器中都是可见的。
6.是否有任何继承规则适用于基类?
不,将其应用于您需要的课程。
7.在决定何时或如何使用它时,还有什么需要考虑的吗?
没有别的我能想到的。