Aquí está mi problema. Soy un gran admirador de Diseño por contrato, estoy usando este concepto especialmente cuando desarrollo bibliotecas que pueden ser utilizadas por otros desarrolladores. Acabo de descubrir una nueva manera de hacer esto que es: Contract.Requires
en lugar de Exception
: Así que en lugar de tener:Contrato.Requiere el uso
public void SomeMethod(string name){
if(name==null) throw new NullArgumentException("Null values not supported");
}
ahora tengo:
public void SomeMethod(string name){
Contract.Requires(name != null);
}
EDITAR: Estoy trabajando bajo VS2010 en modo de depuración.
Problema: Contract.Requires
no hace nada, incluso cuando name
es null
!
La documentación MSDN dice:
Especifica un contrato condición previa para el método de cerramiento o propiedad.
¡Pero no se especifica nada en caso de que no se cumpla la condición!
También noté que hay otherContract.Requires
sobrecargas que arrojan una excepción, muestran el mensaje ... pero entonces ¿para qué sirve Contract.Requires(Boolean)
?
EDITAR respuesta continuación destacó que un plug-in debe estar instalado para tener todo el poder de Contract
API pero entonces ¿qué pasa con los usuarios Mono que quieren que su código se comporte de la misma en diferentes plataformas?
Puede encontrar esto útil: http://stackoverflow.com/questions/6483055/code-contracts-for-mono –
Gracias por la sugerencia. Con toda esta molestia, creo que es mejor que me quede con la antigua forma de lanzar excepciones – GETah