C# 如何只为一个类的3个子类实现一个非静态方法?

C# 如何只为一个类的3个子类实现一个非静态方法?,c#,class,structure,C#,Class,Structure,我有7个类继承了“基类”: 基地 类别1:基地 类别2:基础 类别7:基地 对于这7个类中的3个,我必须添加一个非静态的方法(完全相同的代码),但是这个方法对于其他类应该不可见,并且我不知道如何组织我的代码 有人能帮我吗 编辑: 我不能这样做: 基地 使用“secret”方法初始化:Base 类别1:使用“秘密”方法的类 类2:使用“secret”方法的类 类3:使用“secret”方法的类 类别4:基地 类别5:基础 类别6:基础 类别7:基地 因为在非静态方法中,我使用在Cla

我有7个类继承了“基类”:

  • 基地
  • 类别1:基地
  • 类别2:基础
  • 类别7:基地
对于这7个类中的3个,我必须添加一个非静态的方法(完全相同的代码),但是这个方法对于其他类应该不可见,并且我不知道如何组织我的代码

有人能帮我吗

编辑: 我不能这样做:

  • 基地
    • 使用“secret”方法初始化:Base
    • 类别1:使用“秘密”方法的类
    • 类2:使用“secret”方法的类
    • 类3:使用“secret”方法的类
    • 类别4:基地
    • 类别5:基础
    • 类别6:基础
    • 类别7:基地
因为在非静态方法中,我使用在Class1、Class2和Class3类中声明的属性(我不能移动它,它由实体框架处理)。例如:

this.var
这样做:

  • 基地
    • 使用“secret”方法初始化:Base
      • 类别1:使用“秘密”方法的类
      • 类2:使用“secret”方法的类
      • 类3:使用“secret”方法的类
    • 类别4:基地
    • 类别5:基础
    • 类别6:基础
    • 类别7:基地

重用代码的方法比继承更多。只有当您需要“is-a”类型时才应该使用继承,而不仅仅是因为您不需要代码的多个副本

遏制可能是更好的选择。但是,这取决于你的方法到底做了什么

例如:

public class Contained {
    public void SpecialMethod() {}
}

public class Class1 : Base {
    private Contained _contained = new Contained();

    public override void NormalMethod() {
        // do some work
        _contained.SpecialMethod();
    }
}

public class Class2 : Base {
    private Contained _contained = new Contained();

    public override void NormalMethod() {
        // do some work
        _contained.SpecialMethod();
    }
}

当你有特殊要求却忽略了提及时,你是在浪费人们的时间。你的问题太模糊,需要一个具体的例子来解释你想做什么。这个1类,2类的东西让人更困惑。我还认为你使用了错误的术语。你是说财产吗?属性看起来像这样
[Attribute]
并装饰一个class@ErikFunkenbusch很好的解释,但只是为了完整性,属性可以修饰类和/或其成员、属性和方法。是的,对不起,我指的是“属性”。