2009-08-18 6 views
5

Po pomyślnym uzyskaniu listy konkretnych typów z zestawu za pomocą refleksji, chcę teraz uzyskać właściwości publiczne każdego z nich.Podczas korzystania z funkcji odbicia, aby uzyskać dostęp do właściwości, Jak mogę ograniczyć wyszukiwanie tylko do podklasy, która mnie interesuje?

Każdy z tych typów pochodzi z co najmniej jednej klasy bazowej.

Zauważam, gdy otrzymuję właściwości na typ, że otrzymuję właściwości z klas podstawowych, jak również.

Potrzebuję sposobu, aby odfiltrować właściwości klasy bazowej i uzyskać tylko właściwości, które wywołują właściwości.

Sądzę, że byłby podobny do tego, w jaki sposób uzyskuję tylko podklasy typu podstawowego, z wyłączeniem typu podstawowego, z danego typu podstawowego.

Assembly.GetAssembly(baseType).GetTypes().Where(type => type.IsSubclassOf(baseType)).ToList() 

Odpowiedz

11

Zastosowanie BindingFlags.DeclaredOnly w wywołaniu do Type.GetProperties:

var properties = Type.GetProperties(BindingFlags.DeclaredOnly | 
            BindingFlags.Public | 
            BindingFlags.Instance); 
+0

@ towps- zobaczyć tutaj, aby przeczytać więcej na ten temat: http://msdn.microsoft.com/en-us/library/kyaxdd3x.aspx – RichardOD

+0

@Richard: doda link ... –

+0

Dzięki ludziom! Nie byłem pewien, dlaczego dołączenie flagi DeclaredOnly nie dostarczyło mi niczego. Wygląda na to, że potrzebujesz publiczności i instancji? DeclareOnly i Public wciąż nic mi nie dostały. – topwik

2

użyć flagi wiązania BindingFlags.DeclaredOnly w metodzie GetProperties

Powiązane problemy