.NET Framework
Kodavtal
Sök…
Anmärkningar
Kodkontrakt möjliggör sammanställning eller runtime-analys av metoder före och post för metoder och invariant villkor för objekt. Dessa villkor kan användas för att säkerställa att anropare och returvärde matchar giltiga tillstånd för applikationsbehandling. Andra användningar för kodavtal inkluderar dokumentation.
förutsättningar
Förutsättningar tillåter metoder för att tillhandahålla minimikrav för ingångsparametrar
Exempel...
void DoWork(string input)
{
Contract.Requires(!string.IsNullOrEmpty(input));
//do work
}
Statisk analysresultat ...
Postconditions
Eftervillkor säkerställer att de returnerade resultaten från en metod kommer att matcha den angivna definitionen. Detta ger den som ringer en definition av det förväntade resultatet. Förutsättningar kan tillåta förenklade implementeringar eftersom vissa möjliga resultat kan tillhandahållas av den statiska analysatorn.
Exempel...
string GetValue()
{
Contract.Ensures(Contract.Result<string>() != null);
return null;
}
Statisk analysresultat ...
Kontrakt för gränssnitt
Med hjälp av kodkontrakt är det möjligt att tillämpa ett kontrakt på ett gränssnitt. Detta görs genom att förklara en abstrakt klass som implementerar gränssnitten. Gränssnittet ska märkas med ContractClassAttribute
och kontraktsdefinitionen (den abstrakta klassen) ska märkas med ContractClassForAttribute
C # Exempel ...
[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;
}
}
Statisk analysresultat ...
Installera och aktivera kodavtal
Medan System.Diagnostics.Contracts
ingår i .Net Framework. För att använda kodavtal måste du installera Visual Studio-tillägg.
Under Extensions and Updates
söker du efter Code Contracts
och installerar sedan Code Contracts Tools
När verktygen är installerade måste du aktivera Code Contracts
din projektlösning. Som minimum vill du förmodligen aktivera Static Checking
(kontrollera efter byggandet). Om du implementerar ett bibliotek som kommer att användas av andra lösningar kanske du vill överväga att också aktivera Runtime Checking
.