c# - 访问基类中的子类...但不同

标签 c# polymorphism

我有一个基类,它有一个子类(我认为可能是一个结构,但不确定它是否合适)和一个方法。

class Base 
{
    protected class SubClass 
    {
        public string word;
        public int number;
    }

    protected void SomeMethod()
    {
        this.SubClass.word //this is where I'm struggling
    }
}

然后我有几个子类来实现我的基类,实例化 Base.SubClass 并向实例化的类添加一些值。

class ChildClass1 : Base
{
    public childSubClass = new SubClass();

    public void DoSomethingRidiculous()
    {
        childSubClass.word = "WhoFarted";
    }
} 

class ChildClass2 : Base
{
    public childSubClass = new SubClass();

    public void DoSomethingRidiculous()
    {
        childSubClass.word = "ItStinks";
    }
}

如果可能的话,我希望能够从基类中获取 SubClass.word 的值。我认为我实现自己想法的尝试可能是错误的。

最佳答案

我不确定您是否真的需要子类化/类嵌套。只需移出类 SubClass 声明并声明 SubClass 类型的 protected 字段/属性即可。

public class SubClass 
{
   public string word;
   public int number;
}

public class Base 
{
    protected SubClass subClassInstance = new SubClass();

    protected void SomeMethod()
    {
        this.subClassInstance.word //this is where I'm struggling
    }
}

然后您就可以在 ChildClass1ChildClass2 中访问 subClassInstance

关于c# - 访问基类中的子类...但不同,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7692054/

相关文章:

c# - 访问 C# 类中的变量是否会从内存中读取整个类?

c# - 在不加载dll的情况下获取公钥 token

ruby-on-rails - Mongoid "reverse polymorphism"?如何在一个与类名不匹配的字段下嵌入多个类类型

haskell - Haskell 中的多态性

C++ 友元/多态类错误

c# - 包含超过 100 个项目的列表框崩溃

c# - Xamarin - 找不到匹配的资源

c# - 一些查询后 Entity Framework 变慢

java - 为什么 void 在 Java 中不是协变的?

oop - 在 Fortran 中分配和构造多态对象的规范方法是什么?