public static void Main()
var hideType = typeof(HideB);
var hideProperties = hideType.GetProperties();
Console.WriteLine("Hidden Properties - Number of properties visible");
Console.WriteLine(hideProperties.Length);
Console.WriteLine("Hidden Properties Names:");
foreach (var hideProperty in hideProperties)
Console.WriteLine("{0}-{1}", hideProperty.Name, string.Join(",", hideProperty.CustomAttributes));
Console.WriteLine("=====================");
var overType = typeof(OverB);
var overProperties = overType.GetProperties();
Console.WriteLine("Overridden Properties - Number of properties visible");
Console.WriteLine(overProperties.Length);
Console.WriteLine("Overridden Properties Names:");
foreach (var overProperty in overProperties)
Console.WriteLine("{0}-{1}", overProperty.Name, string.Join(",", overProperty.CustomAttributes));
public virtual string PropertyA { get; set; }
public override string PropertyA { get; set; }
public string PropertyA { get; set; }
public class HideB: HideA
public new int PropertyA { get; set; }