.NET Framework
Contratos de código
Buscar..
Observaciones
Los contratos de código permiten la compilación o el análisis en tiempo de ejecución de las condiciones pre / post de los métodos y las condiciones invariables para los objetos. Estas condiciones se pueden usar para garantizar que las personas que llaman y el valor de retorno coincidan con los estados válidos para el procesamiento de la aplicación. Otros usos de los contratos de código incluyen la generación de documentación.
Precondiciones
Las condiciones previas permiten que los métodos proporcionen valores mínimos requeridos para los parámetros de entrada
Ejemplo...
void DoWork(string input)
{
Contract.Requires(!string.IsNullOrEmpty(input));
//do work
}
Resultado del análisis estático ...
Postcondiciones
Las condiciones posteriores aseguran que los resultados devueltos de un método coincidirán con la definición proporcionada. Esto proporciona a la persona que llama una definición del resultado esperado. Las condiciones posteriores pueden permitir implementaciones simplificadas, ya que el analizador estático puede proporcionar algunos resultados posibles.
Ejemplo...
string GetValue()
{
Contract.Ensures(Contract.Result<string>() != null);
return null;
}
Analisis Estático Resultado ...
Contratos para interfaces
Usando Contratos de Código es posible aplicar un contrato a una interfaz. Esto se hace declarando una clase abstracta que implementa las interfaces. La interfaz debe estar etiquetada con el ContractClassAttribute
y la definición del contrato (la clase abstracta) debe estar etiquetada con el ContractClassForAttribute
C # Ejemplo ...
[ContractClass(typeof(MyInterfaceContract))]
public interface IMyInterface
{
string DoWork(string input);
}
//Never inherit from this contract defintion class
[ContractClassFor(typeof(IMyInterface))]
internal abstract class MyInterfaceContract : IMyInterface
{
private MyInterfaceContract() { }
public string DoWork(string input)
{
Contract.Requires(!string.IsNullOrEmpty(input));
Contract.Ensures(!string.IsNullOrEmpty(Contract.Result<string>()));
throw new NotSupportedException();
}
}
public class MyInterfaceImplmentation : IMyInterface
{
public string DoWork(string input)
{
return input;
}
}
Resultado del análisis estático ...
Instalación y habilitación de contratos de código
Mientras que System.Diagnostics.Contracts
está incluido dentro de .Net Framework. Para utilizar los contratos de código, debe instalar las extensiones de Visual Studio.
En Extensions and Updates
busque Code Contracts
luego instale las Code Contracts Tools
Después de instalar las herramientas, debe habilitar los Code Contracts
dentro de su solución de Proyecto. Como mínimo, es probable que desee habilitar la Static Checking
(comprobación después de la compilación). Si está implementando una biblioteca que será utilizada por otras soluciones, puede considerar también habilitar la Runtime Checking
.