【问题标题】:How to access property of a class whose name is in a variable [duplicate]如何访问名称在变量中的类的属性[重复]
【发布时间】:2019-07-03 11:07:34
【问题描述】:

我有一个类是 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";
        }
    }

【问题讨论】:

标签: c#


【解决方案1】:

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

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

正如您在他们的实现中看到的,他们创建了一个Hashtable,并通过使用反射来填充它。下次有人要求颜色时,他们只需查找并返回它。将生成代码放入静态构造函数中就完成了。

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

【讨论】:

    猜你喜欢
    • 2020-09-18
    • 2011-10-15
    • 2013-09-11
    • 2017-12-20
    • 2011-05-14
    • 1970-01-01
    • 2021-06-30
    • 2012-06-30
    • 2013-11-21
    相关资源
    最近更新 更多