Объявление свойства в производном классе, которое соответствует имени свойства в базовом классе, "скрывает" его (если оно не переопределяет его с помощью ключевого слова override
). И свойства базового, и производного класса будут возвращены Type.GetProperties()
, если их типы не совпадают. Однако, если их типы совпадают, то в результате возвращается только свойство производного класса. Например:
class A
{
protected double p;
public int P { get { return (int)p; } set { p = value; } }
}
class B : A
{
public new int P { get { return (int)p; } set { p = value; } }
}
class C : B
{
public new float P { get { return (float)p; } set { p = value; } }
}
Вызов typeof(C).GetProperties()
приведет только к возврату B.P и C.P. Можно ли вызвать GetProperties()
таким образом, чтобы он возвращал все три? Существует почти наверняка способ сделать это, пройдя иерархию наследования, но есть ли более чистое решение?