A virtual property encapsulating another virtual property? I think you are overengineering it. There's no good reason for backing field to be a virtual property. If someone wants to override the behavior, they already can by overriding Name
. Just make it a field. It can even be a private field. You access it via base.Name
.