【发布时间】:2011-05-02 12:05:51
【问题描述】:
如果:
class Car : Automobile
{}
我能做到:
Car toyota = new Car();
Automobile tauto = (Automobile)toyota;
但如果我使用tauto.GetType().Name,它仍然是汽车。
是否可以执行强制转换,以便将类型永久更改为汽车(无需克隆对象)?
我要克服的问题是 C# 中没有多重继承,我需要以一种方法合并来自 2 个服务的对象(具有相同的签名),并返回一种类型。
【问题讨论】:
-
只是好奇:你为什么要这样做?
-
很抱歉,您为什么要这样做?对象是汽车,而不是汽车。如果你想要一辆汽车,然后实例化一个。
-
长话短说,但它涉及实体框架、POCO,以及它无法使用相同的 POCO 类来由 2 个不同的实体集返回。所以我必须通过继承来解决这个问题。但在外面,我希望两个视图中的对象是相同的。所以只需返回超类。简单的转换是有问题的,因为像 WCF 序列化器和 .net 3.5 泛型之类的东西仍然将转换对象视为子类
-
听起来你的 DataContext 的设计可能是另一个问题的主题,因为实际问题不是关于转换对象,而是关于 EF。
标签: c# oop inheritance clone