如何访问名称在变量中的类的属性

时间:2019-07-03 11:07:34

标签: c#

我有一个类是XPath的集合。我想要传递字段的名称,并想要获取该字段的XPath。这里的问题是我必须将传递的值存储在变量中,并设置if条件,以检查相应的XPath变量,如下所示。

到目前为止,我正在使用if条件,也可以使用switch条件,但是此解决方案不可行,因为XPath的集合将增长,并且变得难以管理。

class Program
    {
        static void Main(string[] args)
        {
            Console.WriteLine(new Program().IReturnXpath("LastName"));
        }

        public string IReturnXpath(String nameOfField)
        {
            if (nameOfField.Equals("Lastname"))
                return new XpathCollection().Lastname;
            else if (nameOfField.Equals("Firstname"))
                return new XpathCollection().Firstname;
            else
                return "Xpath not found";
        }

        class XpathCollection
        {
            public string Lastname = "xpath for lastname";
            public string Firstname = "xpath for firstname";
        }
    }

1 个答案:

答案 0 :(得分:0)

让我解释一下Microsoft如何解决完全相同的问题。

System.Drawing.Color具有许多属性,每个属性反映一种颜色。 Color还有一个FromName方法,可让您通过字符串参数查找颜色。几乎就是您的问题。

正如您在他们的实现中所看到的,他们创建了Hashtable并通过反射将其填充。下次有人要求颜色时,他们只是查找并返回颜色。将生成代码放入静态构造函数中即可。

https://referencesource.microsoft.com/#System.Drawing/commonui/System/Drawing/ColorConverter.cs,d06a69beb42834b2