2012-10-29 10 views
6

Powiel możliwe:
How to get a list of properties with a given attribute?uzyskać wszystkie właściwości, które posiada atrybut niestandardowy z określonymi wartościami

Mam niestandardowej klasy jak ten

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; } 
} 

mam zwyczaj atrybut UseInReporte:

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

    public UseInReporte() 
    { 
     Use = false; 
    } 
} 

Nie Chcę uzyskać Wszystkie właściwości, które mają [UseInReporte(Use=true)] jak mogę to zrobić za pomocą refleksji?

dzięki

Odpowiedz

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

Oczywiście typeof(ClassWithCustomAttributecs) należy zastąpić rzeczywistego obiektu masz do czynienia.

+1

Nie wiem, w jaki sposób obsługuje to '[UseInReporte (Use = true)]' –

+0

dzięki drogi przyjacielu. Jak mogę uzyskać właściwości, które "Użyj == true"? – Arian

+0

@ JonB, dobry punkt, dzięki. Zaktualizowano odpowiedź: – Andrei

Powiązane problemy