¿Existe un marco estándar (tal vez parte de Enterprise Library ... o .NET en sí mismo) que le permite realizar validación de parámetros comunes en los atributos del método?¿Existe un marco estándar para la validación de parámetros .NET que utiliza atributos?
Respuesta
Microsoft Code Contracts, que son parte de .NET Framework desde 4.0 CTP y están disponibles para versiones anteriores de .NET Framework como un paquete independiente, permiten especificar suposiciones de codificación. Esto incluye especificar las condiciones previas que pueden verificar los parámetros.
Un ejemplo de uso para la comprobación de los parámetros deben ser (copiada de Code Contracts documentation):
public Rational(int numerator, int denominator)
{
Contract.Requires(denominator ! = 0);
this.numerator = numerator;
this.denominator = denominator;
}
La ventaja de utilizar Code Contracts es que es una biblioteca que será parte de las futuras versiones de .NET Framework, por lo que tarde o más adelante tendrá una dependencia menos en su aplicación.
EDIT: Acaba de notar que usted solicita específicamente una biblioteca que utiliza Atributos para la comprobación de argumentos ... que Código Contratos no. La razón por la cual los contratos código no utilizan atributos aparece en su FAQ:
La ventaja de utilizar atributos personalizados es que no afectan el código en absoluto. Sin embargo, los beneficios del uso de las llamadas a métodos son muy superiores a la primera opción aparentemente natural de atributos:
apoyo Duración: Sin depender de una re-escritura binaria, contratos expresados con atributos no pueden hacerse cumplir en tiempo de ejecución. Esto significa que si hay condiciones previas (u otros contratos) que desea aplicar en el tiempo de ejecución, necesita duplicar los contratos en el código o incluir un reescritor binario en su proceso de compilación. Contract.RequiresAlways sirve como un contrato declarativo y como una validación verificada en tiempo de ejecución.
Necesidad de análisis: Como los valores que se pueden usar con los atributos personalizados son limitados, las condiciones terminan codificadas como cadenas. Esto requiere definir un nuevo lenguaje que sea apropiado para todos los lenguajes de origen, requiere que las cadenas sean analizadas, duplicando toda la funcionalidad que el compilador ya posee.
Falta de soporte IDE: Expresado como cadenas, no hay soporte para Intellisense, verificación de tipos o refactorización, todos los cuales están disponibles para los contratos de autoría como código.
Dynamic Data para ASP.NET (y ASP.NET MVC) le permite realizar la validación de las propiedades del modelo mediante atributos.
Microsoft Enterprise Library tiene la biblioteca/espacio de nombres Microsoft.Practices.EnterpriseLibrary.Validation que permite la validación utilizando atributos.
Gracias !!!! <- ¡múltiple! debido al requisito de 10 caracteres :) –
También puede usar postsharp e implementar sus propios atributos para la validación.
Aquí hay un ejemplo usando PostSharp http://dpatrickcaldwell.blogspot.com/2009/03/validate-parameters-using-attributes.html
mientras que los contratos de código son Microsoft fuera por un tiempo, todavía están alojados en la EM Investigación y no se puede utilizar la configuración (app.config/base de datos, etc.) a enciende/apaga o incluso cambia las reglas. Mi biblioteca Bouncer proporciona definición de regla declarativa: atributos en código fuente o aplicación.entradas de configuración para reglas a nivel de clase/propiedad de entidad. La biblioteca es de código abierto bajo LGPL (puede usarla libremente en productos comerciales). Si configura las reglas a través de app.config, puede ajustar la configuración de las reglas sin la necesidad de una recompilación.
- 1. ¿Existe un estándar para documentar los parámetros GET/POST?
- 2. ¿Existe un marco de GUI multiplataforma para C# /. NET?
- 3. ¿Qué marco de validación recomendaría para los proyectos .net?
- 4. ¿Existe un marco para .NET que admita el concepto de "código móvil" de Erlang?
- 5. ¿Utiliza un marco de CSS?
- 6. Recomendación para un marco de validación de ASP.NET Webforms Marco de validación
- 7. Marco NLP para .NET
- 8. ¿Existe un marco de inyección de dependencias para Delphi con inyección basada en atributos?
- 9. ¿Hay algún marco estándar para php?
- 10. ¿Existe un marco nosql independiente de la base de datos para .NET?
- 11. Marco para .net Reflection.Emit simplification?
- 12. Validación de parámetros en un script Bash
- 13. Marco de validación en C#?
- 14. ¿Existe un estilo estándar para la documentación en PHP?
- 15. Marco de validación de Javascript para Backbone.js
- 16. ¿Existe un marco para la autenticación abstracta en ASP.NET MVC?
- 17. validación utilizando atributos
- 18. ¿Existe un enfoque estándar para generar SQL dinámicamente?
- 19. Clases de datos de lógica de negocio estándar para .NET
- 20. SVG: ¿Utiliza atributos o CSS para estilo?
- 21. ¿Existe un .NET Micro ORM que generará el esquema db?
- 22. Atributos de metadatos estándar de Clojure
- 23. ¿Existe un mejor marco de aplicación Java que Swing?
- 24. Al vincular un .NET 2.0 Managed Assembly desde una aplicación .NET 4.0, ¿qué marco se utiliza?
- 25. ¿Existe alguna manera "estándar" de implementar la Activación de software para .NET?
- 26. marco de validación basado en anotaciones
- 27. ¿Existe un marco CSS así?
- 28. ¿Existe un complemento jQuery que cumpla con mis requisitos para la validación de formularios múltiples?
- 29. ¿Existe un estándar para usar PBKDF2 como hash de contraseñas?
- 30. existe un atributo authorizeattribute equivalente a formularios web estándar (no MVC) para .net
buenos puntos re: atributos –