c# 嵌套 class 数据类型访问父级的子 class
c# nested class datatype accessing parent's subclass
我有一个相当复杂的自定义数据类型,其中有很多以有组织的格式存储的属性。以下只是其中的一小部分,所以看起来可能没有必要这样做,但我总共有将近 200 个属性,我只是不想给问题带来不必要的混淆。
在以下模型的代码中,我需要 属性:
Chiller.GeneralInformation.PrimaryVoltage
Return 如下:
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
并且 parent
是 null
导致 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; }
}
我有一个相当复杂的自定义数据类型,其中有很多以有组织的格式存储的属性。以下只是其中的一小部分,所以看起来可能没有必要这样做,但我总共有将近 200 个属性,我只是不想给问题带来不必要的混淆。
在以下模型的代码中,我需要 属性:
Chiller.GeneralInformation.PrimaryVoltage
Return 如下:
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
并且 parent
是 null
导致 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; }
}