Looking for .net Keywords? Try Ask4Keywords

.NET Framework Контракты для интерфейсов


пример

Используя Кодовые контракты, можно заключить договор с интерфейсом. Это делается путем объявления абстрактного класса, который связывает интерфейсы. Интерфейс должен быть помечен атрибутом ContractClassAttribute а определение контракта (абстрактный класс) должно быть помечено атрибутом ContractClassForAttribute

Пример C # ...

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

Результат статического анализа ...

введите описание изображения здесь