Взгляните на 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));
}
Вам необходимо C # 3.0 или VB.NET 9.0 с .NET 2.0 или более поздней версии для CuttingEdge.Conditions.