我在方法中有foreach
代码块,我正在使用这么多地方。
“Title”是“UsefulLinks”类的String类型属性,我提到“之前”。 但我想用我的String变量分配该属性,即fieldName。我们如何才能到达实例并分配其值?
在:
foreach (var item in vm.UsefulLinks)
{
item.Title = usefullLinkTranslations
.LastOrDefault(t => t.FieldName == fieldName)
?.Value;
}
后:
foreach (var item in vm.UsefulLinks)
{
item.["fieldName"]= usefullLinkTranslations
.LastOrDefault(t => t.FieldName == fieldName)
?.Value;
}
答案 0 :(得分:1)
为要支持的每个属性构建switch语句:
foreach (var item in vm.UsefulLinks)
{
var fieldValue = usefullLinkTranslations.LastOrDefault(t => t.FieldName == fieldName)?.Value;
switch (fieldName)
{
case "Title":
item.Title = fieldValue;
break;
case "Name":
item.Name = fieldValue;
break;
// ...
}
}
答案 1 :(得分:0)
你可以像这样使用反射(提到@smile);
var type = typeof(UsefulLinks);
foreach (var item in vm.UsefulLinks)
{
type.GetProperty(fieldName) // GetField for fields
.SetValue(
item,
usefullLinkTranslations
.LastOrDefault(t => t.FieldName == fieldName)
?.Value
);
}