I want to hide the base public property(a data member) in my derived class:
class Program { static void Main(string[] args) { b obj = new b()
You could use interfaces to hide the property. The child class would implemented an interface that didn't have the property then it wouldn't appear.
You would need two interfaces for when you want the property and when you don't, thus making it a horrible hack.