【发布时间】:2011-01-28 01:04:24
【问题描述】:
public class SuperCar: Car
{
public bool SuperWheels { get {return true; } }
}
public class Car
{
public bool HasSteeringWheel { get {return true;} }
}
如何为派生的 Supercar 设置基类?
例如,我想像这样简单地设置 SuperCars 基类:
public void SetCar( Car car )
{
SuperCar scar = new SuperCar();
car.Base = car;
}
基本上,如果我有 Car 对象,我不想手动遍历汽车的每个属性来设置 SuperCar 对象,我认为这是你可以做到的唯一方法,但如果你能做到其他方式会好得多。
【问题讨论】:
-
No. 简短原因:没有单独的基础对象。
(object)this == (object)base总是正确的。不过,有一些方法可以通过反射(和其他方式)执行克隆/复制。或许描述一下真正想要什么:) -
虽然问题并没有直接询问反射(或复制构造函数),但我添加了标签以希望生成更有趣的相关问题列表。享受。 (stackoverflow.com/questions/3072518/… 看起来特别有趣,而且可能是重复的)
-
我不太使用继承,所以很有可能有更好的方法来完成我真正想做的事情。基本上,我在 winforms 中使用 wcf ria 服务,但我使用的是 Janusys ui 套件,这需要我将服务代理创建的项目转换为 ITypelist。所以我试图简单地继承服务代理生成的类型以创建 ItemCollection : List
, ItypedList -
@Eric Lippert:听起来他所追求的甚至不是继承,而是他的对象或架构的更好结构。
-
然而,从表面上看,这似乎是最容易做的事情。我需要所有基本属性加上 1 或 2 个附加属性。
标签: c# reflection copy-constructor derived-class