我为这个问题道歉,因为它相当模糊,并且集成了几个问题,但由于它们密切相关,我不想将它们分成几个提交。
我目前正在考虑如何测试应用程序中的配置错误。有不同的选项可用,之前使用过的一个是 IDataErrorInfo 接口。我对这个实现的外观不是很满意,不是因为它不起作用,而是因为我不完全同意实际的实现。我一直在搜索这个站点(所有 52 个相关问题)和其他站点,以了解为什么 Microsoft 决定将关键字“this”与索引一起使用是个好主意。它通常用于对集合中的项目进行索引,即使是强硬的人也可以将我实现的类视为错误的集合,我并不真正同意“this[]”关键字应该隐式地用于测试它们。(边注:这是否意味着自定义集合类不能有自己的配置错误?)为什么这不是像“TestErrorState(string propertyname)”这样的方法调用,甚至不是索引属性?以及“字符串错误{get;”的频率是多少?}”实际使用过吗?对我来说,它看起来像是一种“黑客”,而且不太容易使用。
由于此实现,我确实遇到的一个实际问题是我有与其他对象相关的对象,我希望错误状态能够传播。这很丑陋,因为用户界面中显示的类应该处于“错误状态”,因为相关对象不一定向用户显示(除非用户单击界面上的选项并将“向下移动” ”对象层次结构中的一级)。这意味着我需要用我自己的方法来扩展错误模式的测试来传播这些错误,然后我开始质疑我是否应该只实现一些完全不同的东西而不是使用 IDataErrorInfo 接口。
请让我知道在哪里可以找到一些关于 IDataErrorInfo 为何如此的好信息。如果你能给我一个很好的想法,让我知道如何让错误模式通过对象层次结构传播,这将是非常棒的!当我说传播时,我并不是说作为一个例外,因为这感觉像是一个事件,只是当一个对象被询问配置错误时,它还应该询问它的所有孩子是否有错误,然后也传递孩子的错误消息。