Mendeklarasikan properti di kelas turunan yang cocok dengan nama properti di kelas dasar akan "menyembunyikannya" (kecuali properti tersebut menimpanya dengan kata kunci override
). Properti kelas dasar dan turunan akan dikembalikan oleh Type.GetProperties()
jika tipenya tidak cocok. Namun, jika tipenya lakukan cocok, yang mengejutkan hanya properti kelas turunan yang dikembalikan. Contohnya:
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; } }
}
Memanggil typeof(C).GetProperties()
hanya akan mengembalikan B.P dan C.P. Apakah mungkin memanggil GetProperties()
dengan cara mengembalikan ketiganya? Hampir pasti ada cara untuk melakukannya dengan menelusuri hierarki warisan, tetapi apakah ada solusi yang lebih bersih?