Если я правильно понимаю ваш вопрос (и я не совсем уверен в этом), то вы можете получить желаемое поведение, выполнив что-то вроде этого:
class Car {
public bool CarProperty { get; set; }
// regular constructor
public Car() {
}
// "copy" constructor
public Car(Car c) {
CarProperty = c.CarProperty;
}
}
class SuperCar : Car {
public bool SuperCarProperty { get; set; }
// regular constructor
public SuperCar() {
}
// "copy" constructor
public SuperCar(Car c) : base(c) {
SuperCar sc = c as SuperCar;
if(sc != null) {
SuperCarProperty = sc.SuperCarProperty;
}
}
ТогдаВы можете сделать это:
public void SetCar(Car car) {
SuperCar scar = new SuperCar(car);
}
Обратите внимание, что вы должны быть очень осторожны в своем конструкторе "копирования", чтобы не копировать свойства таким образом, чтобы два объекта совместно использовали одни и те же члены (ссылки), когда они не должны.
Я должен спросить, однако, какова ваша цель с этим?