Zoeken…


Opmerkingen

Codecontracten maken compilatie of runtime-analyse van pre / post-voorwaarden van methoden en invariante voorwaarden voor objecten mogelijk. Deze voorwaarden kunnen worden gebruikt om ervoor te zorgen dat bellers en de juiste waarde overeenkomen met de retourwaarde voor de verwerking van de aanvraag. Ander gebruik voor codecontracten omvat het genereren van documentatie.

randvoorwaarden

Met Randvoorwaarden kunnen methoden worden gebruikt om minimaal vereiste waarden voor invoerparameters te bieden

Voorbeeld...

void DoWork(string input)
{
    Contract.Requires(!string.IsNullOrEmpty(input));

    //do work
}

Statische analyse Resultaat ...

voer hier de afbeeldingsbeschrijving in

postcondities

Postcondities zorgen ervoor dat de geretourneerde resultaten van een methode overeenkomen met de opgegeven definitie. Dit geeft de beller een definitie van het verwachte resultaat. Postcondities kunnen vereenvoudigde implementaties toelaten, omdat sommige statische resultaten door de statische analyse kunnen worden geleverd.

Voorbeeld...

string GetValue()
{
    Contract.Ensures(Contract.Result<string>() != null);

    return null;
}

Statische analyse Resultaat ...

voer hier de afbeeldingsbeschrijving in

Contracten voor interfaces

Met behulp van Code Contracts is het mogelijk om een contract toe te passen op een interface. Dit wordt gedaan door een abstracte klasse te declareren die de interfaces implementeert. De interface moet worden getagd met de ContractClassAttribute en de contractdefinitie (de abstracte klasse) moet worden getagd met de ContractClassForAttribute

C # Voorbeeld ...

[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;
    }
}

Statische analyse Resultaat ...

voer hier de afbeeldingsbeschrijving in

Codecontracten installeren en inschakelen

Terwijl System.Diagnostics.Contracts is opgenomen in het .Net Framework. Als u codecontracten wilt gebruiken, moet u de Visual Studio-extensies installeren.

Zoek onder Extensions and Updates naar Code Contracts en installeer vervolgens de Code Contracts Tools

Code Contract Tools installeren

Nadat de instrumenten zijn geïnstalleerd moet u in staat stellen Code Contracts binnen uw Project-oplossing. Waarschijnlijk wilt u minimaal de Static Checking inschakelen (controle na build). Als u een bibliotheek implementeert die door andere oplossingen wordt gebruikt, kunt u overwegen om ook Runtime Checking .

Project instellingen



Modified text is an extract of the original Stack Overflow Documentation
Licentie onder CC BY-SA 3.0
Niet aangesloten bij Stack Overflow