То, что вы сделали, это скрытие члена. Если класс, из которого вы производите, пометил свойство как virtual
или переопределяет его из своей базы (если он есть), вы используете ключевое слово override
:
public override DateTime NotAfter
Скрытие члена может использоваться, когда базовый класс не пометил его virtual
, однако, если кто-то бросит ссылку на ваш класс в базовый класс и получит доступ к члену, он будет обходить ваше new
скрытие. При истинном наследовании с использованием override
эта проблема не возникает.
Как было отмечено кем-то, это свойство не помечено virtual
:
http://msdn.microsoft.com/en-us/library/system.security.cryptography.x509certificates.x509certificate2.notafter.aspx
Сокрытие членов позволит вам обойти это, если люди будут использовать ваш класс напрямую, но как только кто-то приведёт ваш класс обратно к базовому типу, он получит базовое значение:
class MyClass : Cert...
MyClass c = new MyClass();
DateTime foo = c.NotAfter; // Your newly specified property.
Cert cBase = (Cert)c;
foo = cBase.NotAfter; // Oops, base value. Inheritance cures this, but only with virtual members.