Проверка предварительных условий в .NET.
Я поклонник стратегии "fail early" и хочу проверить, что параметры params имеют правильные значения, например. В Java я бы использовал нечто вроде Guava:
checkArgument(count > 0, "must be positive: %s", count);
Есть ли что-то подобное для .NET?
Ответы
Ответ 1
Что вы хотите сделать, это Дизайн по контракту.
Вы должны использовать Контракты кода для определения контрактов, т.е. Предпосылки, пост-условия и инварианты для ваших типов\методов на С#.
IMO лучший и наиболее полный охват кодовых контрактов здесь.
Ответ 2
Кодовые контракты: http://msdn.microsoft.com/en-us/devlabs/dd491992
Ответ 3
Кодовые контракты по-прежнему являются добавлением/не включенным в стандартную установку Visual Studio, но они позволяют вам выражать предварительные и пост-условия и объектных инвариантов.
Доступны различные варианты для обеспечения исполнения контрактов как проверки времени компиляции или времени выполнения (или обоих).
Ответ 4
Посмотрите CuttingEdge.Conditions. Это позволяет вам свободно писать свои предпосылки следующим образом:
ICollection GetData(int? id, string xml, IEnumerable<int> col)
{
Condition.Requires(id, "id")
.IsNotNull()
.IsInRange(1, 999)
.IsNotEqualTo(128);
Condition.Requires(xml, "xml")
.StartsWith("<data>")
.EndsWith("</data>")
.Evaluate(xml.Contains("abc") || xml.Contains("cba"));
Condition.Requires(col, "col")
.IsNotNull()
.IsNotEmpty()
.Evaluate(c => c.Contains(id.Value) || c.Contains(0));
}
Вам нужно С# 3.0 или VB.NET 9.0 с .NET 2.0 или выше для CuttingEdge.Conditions.