C# 如何使用字符串变量访问子类
我有一个类和子类的结构,如下所示:C# 如何使用字符串变量访问子类,c#,unity3d,C#,Unity3d,我有一个类和子类的结构,如下所示: public class Regions { public const string UNITEDSTATES = "United States"; public static string[] members = { UNITEDSTATES}; public static class UnitedStatesTypes { public const strin
public class Regions
{
public const string UNITEDSTATES = "United States";
public static string[] members = { UNITEDSTATES};
public static class UnitedStatesTypes
{
public const string STEEL = "steel";
public const string CONCRETE = "concrete";
public static string[] members = { STEEL, CONCRETE };
public static class SteelStandards
{
public const string A36 = "ASTM A36";
public static string[] members = { A36 };
public static class A36Grades
{
public const string GRADE_36 = "Grade 36";
public static string[] members = { GRADE_36 };
}
public static class ConcreteStandards
{
...
}
每个类下都有更多的值,但这只是一个小示例,因此您可以了解它的外观。我正在尝试创建一个UI来选择其中的每一个。有4个下拉菜单,每个菜单由较高菜单的值填充。因此,如果标准下拉列表是在SteelStandards上,那么下一个下拉列表将填充A36,如果是在ConcreteStandards上,那么下一个下拉列表将填充ConcreteStandards下的数据。有没有一种方法可以使用字符串变量访问子类
例如,第一个下拉列表将选择美国。下一个下拉列表需要拼凑“UnitedStatesTypes”,然后访问Regions.UnitedStatesTypes.members。我试过用牙套
Regions["UnitedStatesTypes"].members
但这并不奏效。有没有办法做到这一点?或者有更好的方法来组织我的数据吗?您可以只使用字典来完成这项工作,尽管当您走到树下时它会变得有点笨拙:
var regions = new Dictionary<string,Dictionary<string,Dictionary<string,Dictionary<string,List<string>>>>>();
// populate it. Yes I know how ugly that will look!
var usSteelStandards = regions["United States"]["Steel"]["Standards"];
实例:您可以只使用字典来实现这一点,尽管当您走到树下时它会变得有点笨拙:
var regions = new Dictionary<string,Dictionary<string,Dictionary<string,Dictionary<string,List<string>>>>>();
// populate it. Yes I know how ugly that will look!
var usSteelStandards = regions["United States"]["Steel"]["Standards"];
实例:四个嵌套的公共类?真的看起来是个很糟糕的设计,伊姆霍。似乎您应该有一个
字典
。您可以使用反射,但您需要一种方法将字符串“steel”映射到成员名称SteelStandards
——这变得毫无意义。正如@Him所说的——你想要的是一本字典。用字典重新构造它。我怎样才能创建一本4级字典?高级字典会有“子字典”的值吗?@UltraSaucy一个包含文本
&子类的对象模型
-我来写一个答案。四个嵌套的公共类?真的看起来是个很糟糕的设计,伊姆霍。似乎您应该有一个字典
。您可以使用反射,但您需要一种方法将字符串“steel”映射到成员名称SteelStandards
——这变得毫无意义。正如@Him所说的——你想要的是一本字典。用字典重新构造它。我怎样才能创建一本4级字典?高级词典是否有“子词典”的值?@UltraSaucy包含文本
&子词典的对象模型
-我会写一个答案。
var node = new Node("root")
{
{
"United States",
new Node("Steel")
{
{
"ASTM A36",
new Node("Grade 36")
}
},
new Node("Concrete")
{
}
}
};
Console.WriteLine(node["United States"].Children.Count);
Console.WriteLine(node["United States"]["Steel"]["ASTM A36"].Children[0].Text);