За исключением скрытия исходного свойства:
public new DerivedRequest Request { get;set;}
Однако я настоятельно советую против этого. Скрытие чего-то, что должно быть переопределено, создает проблемы, особенно если свойство не является простым автоматически сгенерированным. Также, если использовать его в качестве интерфейса или базового класса, исходную реализацию (в этом случае на один класс выше в дереве наследования). Если вы реализуете абстрактный класс или интерфейс, вы даже не сможете скрыть оригинальную подпись, так как вам необходимо ее реализовать.
Обычно, если вы думаете об использовании ключевого слова new
, вы на неправильном пути. В некоторых случаях это необходимо и необходимо, однако в большинстве случаев это не так.
Вместо этого создайте другое свойство:
public DerivedRequest DerivedRequest {/* make adequate conversions here*/ }
Таким образом, вы четко понимаете, что такое ООП, и вы получаете ясную информацию.