.NET Framework Contrats pour interfaces


Exemple

En utilisant des contrats de code, il est possible d'appliquer un contrat à une interface. Cela se fait en déclarant une classe abstraite qui implémente les interfaces. L'interface doit être étiquetée avec le ContractClassAttribute et la définition du contrat (la classe abstraite) doit être balisée avec ContractClassForAttribute

C # Exemple ...

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

Résultat d'analyse statique ...

entrer la description de l'image ici