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 ...

ange bildbeskrivning här

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 ...

ange bildbeskrivning här

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 ...

ange bildbeskrivning här

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

Code Contract Tools installeras

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 .

Projektinställningar



Modified text is an extract of the original Stack Overflow Documentation
Licensierat under CC BY-SA 3.0
Inte anslutet till Stack Overflow