使用string作为变量的一部分

时间:2016-05-19 13:41:30

标签: c#

我想使用字符串作为变量的一部分。

例如,在下面的代码中,我有一个名为productLine的字符串。我想使用此字符串中的值来创建变量名称并在此变量上调用属性“Value”。我想继续在'productLine'中切换值,因此继续切换调用value方法的变量。

有没有办法做到这一点,还是我需要重写代码并采取不同的方法?

foreach (string productLine in productLineData)
{
    string templateKey = "{{" + productLine + "}}";
    string templateValue = "";
    if (productRow.productLine.Value != null)
        templateValue = productRow.productLine.Value.ToString();
    productRowText = productRowText.Replace(templateKey, templateValue);
}

productRow是一个包含我想要使用的属性的模型。

编辑:

productLine包含String值。例如,它首先包含productName。那时我想打电话给productRow.productName.Value。下一个'productLine'包含productPrice。那时我想打电话给productRow.productPrice.Value。等

2 个答案:

答案 0 :(得分:3)

你可以像romain-aga建议的那样使用反射来做到这一点。

 using System.Reflection;


    //...
    foreach (string productLine in productLineData)
    {
        string templateKey = "{{" + productLine + "}}";
        string templateValue = string.Empty;
        object value =  productRow?.GetType()?.GetProperty(productLine)?.GetValue(productRow, null);
        if (value != null)
            templateValue = value.ToString();
        productRowText = productRowText.Replace(templateKey, templateValue);
    }
    //...

答案 1 :(得分:0)

如果要寻址的变量是类的属性(即成员),则Reflection将允许您使用其名称的字符串来获取/设置其值。如果变量只是一个函数范围的符号(即string myVar = "";),则它在运行时不存在且无法访问。