这是我的锁链:
public abstract class Item ->
public abstract class MiscItem ->
public abstract class OtherItem ->
public class TransformableOther;
在
Item
中,有一个复制构造函数:public Item (Item other)
{
// copy stuff ...
}
我想这样做:
var trans = new TransformableOther (otherItem);
当然那没用,我去了
TransformableOther
并尝试了:public TransformableOther(Item other): base (other) {}
但这并不能很好地工作,当然,这只是称呼位于其正上方的父级。我去了
OtherItem
并做了同样的事情,所以对于其父MiscItem
,它没有用。
我怎样才能实现自己想要的? -如果我做不到,这有什么破解方法?
谢谢。
编辑:我不好,由于某种原因,我在代码中做的是
base.Item(otherItem)
而不是base(otherItem)
,这实际上是我在问题中写的。 最佳答案
这可行。
public abstract class Item
{
private Item other;
public Item(Item item)
{
System.Diagnostics.Debug.WriteLine("Creating Item!");
other = item;
}
public abstract class MiscItem : Item
{
public MiscItem(Item item) : base(item)
{
}
public abstract class OtherItem : MiscItem
{
public OtherItem(Item item) : base(item)
{
}
public class TransformableOther : OtherItem
{
public TransformableOther() : base(null)
{
}
public TransformableOther(Item item) : base(item)
{
}
}
}
}
}
然后可以用
Item.MiscItem.OtherItem.TransformableOther other = new Item.MiscItem.OtherItem.TransformableOther();
var item = new Item.MiscItem.OtherItem.TransformableOther(other);
关于c# - 我可以在长继承链中为子类调用顶级构造函数吗?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/17969005/