2010-09-20 14 views
0
class CBase 
{ 
object A {get;set;} 
object B {get;set;} 
} 

class CDerived : CBase 
{ 
object X {get;set} 
object Y {get;set;} 
} 

J'essaie d'obtenir des propriétés de premier niveau. Pour l'exemple ci-dessus, les propriétés prévues sont X et Y, et non A et B. Avec le code suivant, j'obtiens toutes les propriétés {A, B, X, Y}. Y a-t-il une solution sans signature d'attribut?Réflexion sur les propriétés pour le niveau le plus élevé

foreach (var propertyInfo in typeof(CDerived).GetProperties()) 
{ 
propertyInfo.SetValue(model, row[propertyInfo.Name], null); 
} 

Répondre

2

Essayez d'utiliser le drapeau de liaison DeclaredOnly dans votre appel GetProperties. Cela devrait limiter les propriétés renvoyées au niveau d'héritage (classe) spécifié.

+0

http://stackoverflow.com/questions/1544979/c-reflection-getproperties-with-bindingflags-declaredonly –