¿Debería IDataErrorInfo.Error verificar cada propiedad? ¿O puedo confiar en que los clientes llamen a IDataErrorInfo.Item en cada propiedad?¿Debería IDataErrorInfo.Error verificar cada propiedad?
8
A
Respuesta
13
IDataErrorInfo.Error se utiliza para informar el estado de validación de todo el objeto.
Por ejemplo, si su objeto tiene propiedades StartTime y EndTime probablemente querrá que StartTime sea menor que el EndTime y si esta regla de validación se rompe, no será apropiado mostrar un mensaje ni para una ni para la otra propiedad.
La propiedad del error también es apropiada para resumir el estado de validación general de su objeto. Entonces la respuesta es no, no debes verificar cada propiedad. Los mensajes de error relacionados con una propiedad particular están expuestos por
string this[string columnName]
indexer.
EDITAR: aquí un link que explica cómo se supone que se utiliza la interfaz.
Cuestiones relacionadas
- 1. verificar existencia de propiedad
- 2. Verificar la propiedad del dominio
- 3. Cómo verificar la colisión 2D sin verificar cada objeto
- 4. ¿Debería tener NSFetchedResultsController en cada vista?
- 5. ¿Debería cada clase tener un destructor virtual?
- 6. ¿Qué nombre debería tener una propiedad DateTime?
- 7. ¿Cómo verificar si existe una propiedad?
- 8. Verificar el inicio de sesión en cada actividad
- 9. Regla Drools iterar colecciones y verificar la propiedad
- 10. ¿Debería verificar el código de retorno de Getopt :: Long :: GetOptions?
- 11. ¿Se debería reconstruir un octárbol en cada cuadro?
- 12. ¿Debería poner un bloque try-finally después de cada Object.Create?
- 13. ConfigurationManager.AppSettings ["SettingName"] vs Properties.Settings.Default.SettingName ¿cuándo debería usar cada uno?
- 14. ¿Debería cada `ftplugin/name.vim` necesitar definir` b: undo_ftplugin`?
- 15. Metodología de interfaces Java: ¿Debería cada clase implementar una interfaz?
- 16. ¿Debería cada clase tener su propio espacio de nombres?
- 17. Verificar si el proceso se ejecuta cada minuto
- 18. ¿Cuándo debería usar un campo en lugar de una propiedad?
- 19. Verificar que un objeto tiene una cierta propiedad
- 20. ¿Cómo verificar si un objeto tiene cierto método/propiedad?
- 21. escuchar los cambios del portapapeles, verificar la propiedad?
- 22. Adición de atributos adicionales para cada propiedad de una clase
- 23. Agregar nueva propiedad a cada documento en una gran colección
- 24. ¿Debería verificar los valores incorrectos de los parámetros en el constructor?
- 25. Con PHP y MySQL, ¿debería verificar si hay fallas de reversión?
- 26. ¿Debería el verificador estático de contratos de código ser capaz de verificar el límite aritmético?
- 27. ¿Debería una propiedad protegida en una clase secundaria C# ocultar el acceso a una propiedad pública en el elemento primario?
- 28. Moq - Cómo verificar que un valor de la propiedad se establece a través de la incubadora
- 29. ¿Error al verificar overkill?
- 30. jQuery mobile- ¿Para cada evento de toque en vivo debería haber un evento de clic equivalente?
Lo que dices suena razonable, pero ¿tienes algo para respaldarlo? Parece que utilizar el reflejo para obtener todas las propiedades para comprobar sería bastante caro. –
Puede comprobar cómo los controles de Microsofts (como DataGrid) reaccionan a los datos que implementan la interfaz. Puedes observar las llamadas que hace. Si aún no está convencido de que puede verificar http://msdn.microsoft.com/en-us/library/system.componentmodel.idataerrorinfo%28VS.95%29.aspx ese enlace y el ejemplo de cómo se utiliza. – Koynov
el enlace de MSDN en la respuesta dice "Tenga en cuenta que el motor de enlace nunca usa la propiedad Error, aunque puede usarlo en informes de error personalizados para mostrar errores a nivel de objeto". sin embargo, recibo un punto de ruptura dentro de "Error" que tiene BindingExpression.TransferValue en la pila de llamadas: - / –