Mam klasy, która pochodzi od klasy abstrakcyjna. Uzyskiwanie typu klasy pochodnej Chcę dowiedzieć się, które właściwości są dziedziczone z klasy abstrakcyjnej i które zostały zadeklarowane w klasie pochodnej.Jak sprawdzić, czy właściwość jest dziedziczona z klasy bazowej lub zadeklarowana w pochodnej?
public abstract class BaseMsClass
{
public string CommonParam { get; set; }
}
public class MsClass : BaseMsClass
{
public string Id { get; set; }
public string Name { get; set; }
public MsClass()
{ }
}
var msClass = new MsClass
{
Id = "1122",
Name = "Some name",
CommonParam = "param of the base class"
};
Tak, chciałbym, aby szybko dowiedzieć się, że CommonParam jest dziedziczną parametr i Id, Nazwa params są zadeklarowane w MsClass. Jakieś sugestie?
Próbowano użyć tylko zadeklarowane flagę zwraca Mnie bezowocne PropertyInfo tablicę
Type type = msClass.GetType();
type.GetProperties(System.Reflection.BindingFlags.DeclaredOnly)
-->{System.Reflection.PropertyInfo[0]}
Jednak GetProperties() zwraca wszystkie właściwości hierarchii dziedziczenia.
type.GetProperties()
-->{System.Reflection.PropertyInfo[3]}
-->[0]: {System.String Id}
-->[1]: {System.String Name}
-->[2]: {System.String CommonParam}
Czy coś mi umknęło?
W pewien sposób takie podejście nie daje oczekiwanego rezultatu. Pytanie zostało zaktualizowane. – Maxim
@Maxim potrzebujesz 'type.GetProperties (BindingFlags.DeclaredOnly | BindingFlags.Instance | BindingFlags.Public)'. +1 do Reeda, mam nadzieję, że zaktualizuje odpowiedź nieco. –
@Maxim Dodano kod ... –