我想使用字符串作为变量的一部分。
例如,在下面的代码中,我有一个名为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
。等
答案 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 = "";
),则它在运行时不存在且无法访问。