2012-10-29 106 views
6
自定義屬性的所有屬性

可能重複:
How to get a list of properties with a given attribute?獲取具有與特定值

我有這樣

public class ClassWithCustomAttributecs 
{ 
    [UseInReporte(Use=true)] 
    public int F1 { get; set; } 

    public string F2 { get; set; } 

    public bool F3 { get; set; } 

    public string F4 { get; set; } 
} 

我有一個自定義自定義類屬性UseInReporte

[System.AttributeUsage(System.AttributeTargets.Property ,AllowMultiple = true)] 
public class UseInReporte : System.Attribute 
{ 
    public bool Use; 

    public UseInReporte() 
    { 
     Use = false; 
    } 
} 

不可以我想要所有屬性有[UseInReporte(Use=true)]我如何使用反射來做到這一點?

感謝

回答

11
List<PropertyInfo> result = 
    typeof(ClassWithCustomAttributecs) 
    .GetProperties() 
    .Where(
     p => 
      p.GetCustomAttributes(typeof(UseInReporte), true) 
      .Where(ca => ((UseInReporte)ca).Use) 
      .Any() 
     ) 
    .ToList(); 

當然typeof(ClassWithCustomAttributecs)應該與你正在處理一個實際的對象替換。

+1

不知道如何處理'[UseInReporte(Use = true)]' –

+0

謝謝親愛的朋友。我怎樣才能得到'使用==真'的屬性? – Arian

+0

@JonB,好點,謝謝。更新了答案 – Andrei