C#继承传递模板值

时间:2014-04-01 21:16:19

标签: c# oop inheritance multiple-inheritance

我得到了一种树继承关系。每个上层节点可以被视为模板值。并且较低的节点具有完全相同的值和一些新列(值的种类)。

我想知道是否有一种简单的方法可以将这些值从上层节点传递给下层节点。

我的代码如下:

    public class rootData
    {
        public long sID;
        public string sName;
        public string title;
        public string country;

       <many....many...columns>

    };

    public class sub1 : rootData
    {
        public void load(rootData template)
        {
            this.sID= template.sID;
            this.sName= template.sName;
            this.title= template.title;
            this.country= template.country;

            <many....many...asigns>
        }
        public int sNumberA;
        public int sNumberB;
    };

我想知道:有没有办法像

那样写

this.everything=template.everything

替换那么多行的符号:

            this.sID= template.sID;
            this.sName= template.sName;
            this.title= template.title;
            this.country= template.country;

            <many....many...asigns>

2 个答案:

答案 0 :(得分:0)

rootData中设置sub1字段,并在构造函数中添加一个参数,用于填充此字段。如果rootData中的字段主要是“哑”标签,我会将其设为struct,以说明它只是一个简单的数据集合,顶部很少或没有逻辑。

正如Erik所指出的那样,物业可能会更优越。请注意,您可以将rootData中的各个字段公开为道具,并避免向其他类广播您的类的详细信息(即,它具有rootData字段。)

答案 1 :(得分:0)

您是否可以这样做的答案是您是想要继承还是合成。您希望sub1成为rootData吗?如果是这样,您将需要复制值。您希望sub1包含rootData吗?如果是这样,您可以让sub1保留您传入的rootData的值。当然,如果您这样做,则不能将其作为单独的rootData无论如何都要复制这些值。

我的简短回答是:创建一个复制值的函数。你只需要做一次。