Я хочу знать, возможно ли что-то подобное: я переопределил свойство базового класса, которое реализовано автоматически.Я предоставил логику в переопределении, чтобы разрешить «отсутствующие» свойства по сравнению с настройками по умолчанию.
Теперь я хочу использовать отражение, чтобы проверить, используется ли значение по умолчанию или какое-то «фактическое» значение.Другими словами, мне нужно проверить, является ли base.Property
нулевым, но с помощью отражения.Это не работает, оно просто получает значение подкласса (которое разрешается по умолчанию, поэтому не ноль).
var property = this.GetType().GetProperty(e.PropertyName);
if(property.GetValue(this, null) == null))
OnPropertyChanged(e.PropertyName);
Также пробовал:
var property = this.GetType().BaseType.GetProperty(e.PropertyName);
if(property.GetValue(this, null) == null))
OnPropertyChanged(e.PropertyName);
Возможно ли этоиспользование отражения для доступа к значению базового класса?
ОБНОВЛЕНИЕ:
Следуя советам из комментариев, я попробовал следующее, только для ударов.
var method1 = this.GetType().BaseType.GetMethods().First(x => x.Name.Contains(e.PropertyName));
var method = this.GetType().BaseType.GetProperty(e.PropertyName).GetGetMethod();
var methodValue = method1.Invoke(this, null);
Оба эти все ещевозвращает «производное» значение, в то же время base.Property
возвращает ноль.