Let me see if I am understand what you're asking:
Why can't we declare an interface:
interface IPerson
{
string Name {get;set;}
int ID {get;set;}
}
And classes which implement that interface will inherit its properties without having to re-declare them:
class Person : IPerson { }
//person now has properties Name and ID
The reason you can't do this is even though the text of your interface code and your class code are very similar, they mean very different things. The interface simply says "implementor will have a string Name with getter and setter". It is the class which says "return private field when getter for name is invoked." Even if you use the auto-property shortcut to let the compiler implement that logic, it is still logic, which belongs in the class. Just because:
string Name {get;set;}
looks the same in an interface and in a class, it does not mean even remotely the same thing.
It would be very dangerous for the compiler to implement arbitrary logic to fulfill your contracts for you, instead of complaining at compile time that you haven't implemented them. It could introduce bugs very difficult to track down. Having compilers fall back to default behavior when no behavior is defined is a very, very bad idea.