2011-08-18 32 views
5

我有一個Action類,它擁有更多Action對象的集合。事情是這樣的:如何使用流利驗證來驗證包含更多相同類型對象的對象?

public class Action 
{ 
    ICollection<Action> SubActions; 
} 

這基本上形成了一個樹狀結構(我要確保有沒有循環)。我使用Fluent Validation爲該課程編寫驗證程序。這是我的驗證器嘗試:

public class ActionValidator : AbstractValidator<Action> 
{ 
    public ActionValidator() 
    { 
     RuleFor(x => x.SubActions).SetCollectionValidator(new ActionValidator()); 
    } 
} 

當我試圖解決任何依賴於ActionValidator的問題時,Unity會爆炸。更具體地說,當LINQPad嘗試解析一個依賴於ActionValidator的服務時,崩潰可能來自堆棧溢出。

我的Action類中還有其他成員正在驗證,但爲了簡潔起見,我只是放了重要的部分。如果我註釋掉我在這裏列出的規則,它會正常工作(除非它不再驗證子動作)。

我的方法出現問題。我遞歸地構造驗證器,直到有些事情死亡。但我只是不確定如何告訴Fluent驗證以這種方式驗證子對象。

回答

9

變化,用於驗證的相同類型的規則:

Rulefor(x => x.SubActions).SetCollectionValidator(this); 
+1

這花了我很長一段時間來弄清楚。可悲,真的。 – Ross