Реализуйте свойство из интерфейса явно :
public class Car : ICar
{
public Wheel Wheel { get; set; }
IWheel ICar.Wheel
{
get { return Wheel; }
set { Wheel = (Wheel)value; }
}
}
Таким образом, пользователи вашего класса увидят «исходное» свойство Wheel
, набранное как полноценное Wheel
, тогда как тот, кто использует интерфейс, получит явную реализацию (которая, в вашем случае, напрямую сопоставляется с другим свойством, но в любом случае рассматривается компилятором отдельно).
Примечание приведение в сеттере и его последствия, если интерфейс действительно должен иметь свойство записи.