【发布时间】:2012-09-03 21:36:46
【问题描述】:
向 StackOverflow 的所有聪明才智致敬!
我越来越熟悉 c# 类继承和多个构造函数,但我似乎无法说出一个可以让我谷歌它的问题。
这是我所拥有的:
public class Order: OtherOrder
{
private OtherOrderManager _om;
public Order()
{
if (_om == null)
_om = new OtherOrderManager();
}
public Order(int orderID)
: base()
{
}
}
很明显,现在我可以这样做:
Order order = new Order();
order.Member_From_OtherOrder_Class = "bleh";
但这是我试图在构造函数中实现的:
public class Order: OtherOrder
{
private OtherOrderManager _om;
public Order()
{
if (_om == null)
_om = new OtherOrderManager();
}
public Order(int orderID)
: base()
{
this = (Order)_om.GetOrder(orderID); //Returns an instance of OtherOrder
//Basically, I want to populate all the members of Order() interited
//from OtherOrder and fill them with data returned by this call.
}
}
显然,“this”是只读的,因此甚至无法编译。是否有任何技术表达可以描述我正在寻找的东西?有可能吗?
谢谢!
编辑:我想我会使用反射来遍历所有成员并以这种方式获取/设置值。
【问题讨论】:
-
你可能想让你的 OtherOrderManager 静态和单例一样。
-
AFAIK,这是不可能的。我建议您在
OtherOrderManager处编写一个public static方法,该方法将返回一个Orderistance -
听起来你想要某种工厂模式。 en.wikipedia.org/wiki/Factory_pattern 或可能是“抽象工厂模式”。本质上,当你想要一个
Order时,你不会直接实例化它。相反,您将使用OrderFactory(或者在这种情况下,可能是OtherOrderManager)并说Order order = OrderManager.GetOrder(orderID)。但随后您继续谈论填充另一个订单的信息(克隆?)也许您应该描述一下您的总体最终意图。 -
@ChrisSinclair 是的,你是对的。并且 Order 和 OtherOrder 对我来说对这样的继承关系有点困惑,不确定这是去那里的方式
-
@VincentB。我同意。不确定 Francis 的目标是什么,但我将复制构造函数的快速实现与继承和构造函数链接放在一起。也许这会让一些船浮起来。
标签: c# class inheritance constructor