2

私は当初、検証に影響を与えるポリモーフィズム/継承に関係していると考えていたこの問題と戦っていましたが、これに絞り込みました...

これがクラス構造です..

public class Employee {

    [ObjectValidator(Ruleset = "A")]
    public EmployeeName Name { get; set; }

    public Employee()
    {
        Name = new EmployeeName();
    }
}

public class EmployeeName
{
    [StringLengthValidator(1,20,Ruleset = "A")]
    public string First { get; set; }

    public string Last { get; set; }

    public EmployeeName()
    {
        First = string.Empty;
        Last = string.Empty;
    }
}

テスト:

[TestFixture]
public class ObjectValidationWithRulesets
{
    [Test]
    public void wont_validate_with_a_ruleset()
    {
        var person = new Employee()
        {
            Name = new EmployeeName()
            {
                First = string.Empty, 
                Last = string.Empty
            }
        };

        var ruleSetValidator =
            ValidationFactory.CreateValidator<Employee>("A");

        var validationResults = ruleSetValidator.Validate(person);

        Assert.That(!validationResults.IsValid,
            "Validation with rulsets failed");
    }
}

ルールセットのものを削除すると、このテストに合格します。しかし、ルールセットが適用されると、オブジェクトを正しく検証できません。

誰でもこれに光を当てることができますか?

乾杯、

4

1 に答える 1

2

私もこの問題を抱えていましたが、構成ファイルで targetRuleSet を定義していませんでした。ObjectValidator 属性を宣言する方法を修正して、問題を修正しました。私のために働いた正しい構文は次のとおりです

// Correct
[ObjectValidator("RuleSetA", Ruleset = "RuleSetA")]

私のコードでは、次のように誤って宣言していました

// Wrong syntax
[ObjectValidator(Ruleset = "RuleSetA")]
于 2010-08-12T11:13:19.570 に答える