C# C继承传递模板值

C# C继承传递模板值,c#,oop,inheritance,multiple-inheritance,C#,Oop,Inheritance,Multiple Inheritance,我得到了一种树继承关系。每个上部节点都可以被视为模板值。下面的节点有完全相同的值和一些新的列类型的值 我想知道的是,有一种简单的方法可以将这些值从上层节点传递到下层节点 我的代码如下: public class rootData { public long sID; public string sName; public string title; public string country; <

我得到了一种树继承关系。每个上部节点都可以被视为模板值。下面的节点有完全相同的值和一些新的列类型的值

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

我的代码如下:

    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;
    };
将rootData设置为sub1中的字段,并将参数添加到用于填充此字段的构造函数中。如果rootData中的字段大部分都是哑标签,我会将其设置为一个struct,以说明它只是一个简单的数据集合,上面几乎没有逻辑


正如埃里克指出的,房地产可能会更优越。请注意,您可以将rootData中的各个字段公开为道具,并避免向其他类广播您的类的详细信息,即它有一个rootData字段。

您是否可以这样做的答案是您想要继承还是合成。是否希望sub1成为rootData?如果是这样,您需要复制这些值。是否希望sub1包含根数据?如果是这样,您可以让sub1保存传入的rootData的值。当然,如果您这样做,您就不能让它成为一个单独的rootData,而不复制这些值


我的简短回答是:创建一个函数来复制值。您只需执行一次。

如何将关系从is-a更改为has-a?是的,我只想要has-a,然后如何更改?我强烈建议将这些字段转换为属性。在本例中,如果我更改模板的值,它是否应该更改派生的sub1值?实际上。。。上限值永远不会改变。。。别想那件事
            this.sID= template.sID;
            this.sName= template.sName;
            this.title= template.title;
            this.country= template.country;

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