nVentive Umbrellaをチェックしてみてください。
using System;
using nVentive.Umbrella.Validation;
using nVentive.Umbrella.Extensions;
namespace Namespace
{
public static class StringValidationExtensionPoint
{
public static string Contains(this ValidationExtensionPoint<string> vep, string value)
{
if (vep.ExtendedValue.IndexOf(value, StringComparison.InvariantCultureIgnoreCase) == -1)
throw new ArgumentException(String.Format("Must contain '{0}'.", value));
return vep.ExtendedValue;
}
}
class Class
{
private string _foo;
public string Foo
{
set
{
_foo = value.Validation()
.NotNull("Foo")
.Validation()
.Contains("bar");
}
}
}
}
Validation 拡張機能がビルダーであることを願っていますが_foo = value.Validation().NotNull("Foo").Contains("bar").Value;
、それがそのままです (幸いなことにオープン ソースであるため、ビルダーにするのは些細な変更です)。
また、代替ソリューションとして、domain validation を検討できます。
最後に、新しい M 言語は、Oslo の一部として、エクステントとフィールドの制限をサポートします。これは、T-SQL 検証と機能する検証テストを備えた CLR クラスの両方に変換されます (ただし、Oslo はリリースから長い時間がかかります)。