コード例に使用しているエンタープライズライブラリのバージョンは何ですか?Enterprise Library 5.0を使用して試しましたが、機能しませんでした。
EL5.0ソースコードを含むコードの次のセクションまで追跡しました。
[namespace Microsoft.Practices.EnterpriseLibrary.Validation]
[public static class Validation]
public static ValidationResults Validate<T>(T target, ValidationSpecificationSource source)
{
Type targetType = target != null ? target.GetType() : typeof(T);
Validator validator = ValidationFactory.CreateValidator(targetType, source);
return validator.Validate(target);
}
ターゲットオブジェクトが定義されている場合、target.GetType()は、インターフェイス定義ではなく、最も具体的なクラス定義を返します。
私の回避策は、回線を置き換えることです。
ValidationResults r = Validation.Validate<ISpike>(spike);
と:
ValidationResults r ValidationFactory.CreateValidator<ISpike>().Validate(spike);
これでうまくいきました。