繁体   English   中英

c#嵌套类数据类型访问父类的子类

[英]c# nested class datatype accessing parent's subclass

我有一个相当复杂的自定义数据类型,其中包含以有组织的格式存储的许多属性。 以下只是其中的一小部分,因此看起来可能没有必要这样做,但我总共有近 200 个属性,我只是不想给问题带来不必要的混乱。

在以下模型的代码中,我需要具有以下属性:

Chiller.GeneralInformation.PrimaryVoltage

返回以下内容:

Chiller.Controller.PrimaryVoltage.Voltage + " / " + Chiller.Controller.PrimaryVoltage.Phases;

发生这种情况的最佳方法是什么?

namespace WebQuoter.Models
{
    public class Chiller
    {
        public MyGeneralInformation GeneralInformation { get; set; }
        public MyController Controller { get; set; }

        public class MyGeneralInformation
        {
            public string AssemblyID { get; set; }
            public string PrimaryVoltage
            {
                get
                {
                    return "HELP";
                }
            }
        }

        public class MyController
        {
            public MyPrimaryVoltage PrimaryVoltage { get; set; }

            public class MyPrimaryVoltage
            {
                public string Voltage { get; set; }
                public string Phases { get; set; }
            }
        }
    }
}

我个人认为没有理由以这种方式设计它,但如果这是您想要的,您需要在MyGeneralInformation引用父级Chiller

public class Chiller
{
    private MyGeneralInformation information;

    public MyGeneralInformation GeneralInformation
    {
        get
        {
            return information;
        }
        set
        {
            information = value;
            information.parent = this;
        }
    }
    public MyController Controller { get; set; }

    public class MyGeneralInformation
    {
        internal Chiller parent;
        public string AssemblyID { get; set; }
        public string PrimaryVoltage
        {
            get
            {
                return string.Format(
                    "{0}/{1}",
                    parent.Controller.PrimaryVoltage.Voltage,
                    parent.Controller.PrimaryVoltage.Phases);
            }
        }
    }

    public class MyController
    {
        public MyPrimaryVoltage PrimaryVoltage { get; set; }

        public class MyPrimaryVoltage
        {
            public string Voltage { get; set; }
            public string Phases { get; set; }
        }
    }
}

但是,当您创建MyGeneralInformation并且parentnull导致PrimaryVoltage引发异常时,这会出现问题。 你可以在那里null检查,但我个人不明白你为什么不这样做

public class Chiller
{
    public string AssemblyID { get; set; }

    public string PrimaryVoltage
    {
        get
        {
            return string.Format("{0}/{1}", Voltage, Phases);
        }
    }

    public string Voltage { get; set; }

    public string Phases { get; set; }
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM