'Дизайн контракта' в C#

Я хотел попробовать немного дизайна контракта в моем последнем приложении C# и хотел иметь синтаксис, сродни:

public string Foo()
{
    set {
        Assert.IsNotNull(value);
        Assert.IsTrue(value.Contains("bar"));
        _foo = value;
    }
}

Я знаю, что могу получить статические методы как это от платформы модульного теста, но я хотел знать, было ли что-то вроде этого уже встроено на язык или если уже была некоторая платформа, плавающая вокруг. Я могу записать, что мои собственные Утверждают функции, просто не хотят изобретать велосипед.

37
задан Scott Dorman 4 November 2008 в 03:56
поделиться

2 ответа

Для моего текущего проекта (февраль 2010 г., VS 2008) я выбрал http://lightcontracts.codeplex.com/

Просто, это просто проверка во время выполнения, без какой-либо странной сложности, вы не необходимо унаследовать от каких-то «странных» базовых классов, без AOP, интеграции с VS, которая не будет работать на некоторых рабочих станциях разработчиков и т. д.

Простота важнее сложности.

1
ответ дан 27 November 2019 в 04:04
поделиться

В .net Fx 4.0 есть ответ:

System.Diagnostics.Contracts

http://msdn.microsoft.com/en-us/library/dd264808.aspx

Contract.Requires(newNumber > 0, “Failed contract: negative”);
Contract.Ensures(list.Count == Contract.OldValue(list.Count) + 1);
6
ответ дан 27 November 2019 в 04:04
поделиться
Другие вопросы по тегам:

Похожие вопросы: