我正在處理一些驗證代碼,並且在我的Linq代碼中遇到了一些問題。在開始Linq查詢之前「過濾」一個集合
我所擁有的是一個在特定屬性(ValidationAttribute)上驗證的類。這一切都正常工作,即驗證與一個具有用該屬性(或其子類)裝飾的某些屬性的類一起工作。
我現在想要完成的是告訴我的「驗證器」類忽略所有用某個其他屬性標記的屬性(讓我們稱之爲IgnoreAttribute)。
所以我的問題是,我如何首先找到具有驗證屬性(我已經有代碼)的所有屬性,但首先「過濾」該集合忽略具有忽略屬性(或實際上是List採集)。
用於驗證的代碼如下所示:
from prop in TypeDescriptor.GetProperties(instance).Cast<PropertyDescriptor>()
from attribute in prop.Attributes.OfType<ValidationAttribute>().
where attribute.IsValid(prop.GetValue(instance)) == false
select new ...etc
我想這個代碼忽略包含在一個列表,我在類的所有屬性,即某種過濾的原始集...
任何想法?
UPDATE:
我想我的問題真的是這樣的: 如果我有一個具有其屬性飾有類似屬性的類:
class MyClass
[Required]
public string MyProp { get; set; }
[Required]
[Ignore]
public string MyProp2 { get; set; }
如何找到所有的性質有驗證屬性(必須繼承)),但不是忽略屬性?雖然我真的不想忽略屬性列表,而不是忽略忽略屬性。
是的,那工作...我爲什麼沒有想到那個......衝突者?謝謝你,對於遲到的回答感到抱歉! – 2010-08-17 10:55:32