gpt4 book ai didi

c# - 使用大型 switch 语句将数据分配给属性...是否有更动态的方法来执行此操作?

转载 作者:行者123 更新时间:2023-12-02 14:33:45 24 4
gpt4 key购买 nike

因此,我从数据库中提取一些信息,并且需要将其映射到模型的属性。我的第一次尝试产生了一个遵循明显模式的大型 switch 语句。我想知道这个脆弱的代码是否可以用更动态的方式表达。

foreach (AttributeValue attributeValue in attributeValues)
{
string label = attributes.First(a => a.ID == attributeValue.AttributeID).Name;
switch (attributeValue.AttributeName)
{
case "TaskSequence":
TaskSequenceLabel = label;
break;
case "TaskStatus":
TaskStatusLabel = label;
break;
case "InstallChangeNumber":
InstallChangeNumberLabel = label;
break;
case "InstallChangeStart":
InstallChangeStartLabel = label;
break;
case "InstallChangeEnd":
InstallChangeEndLabel = label;
break;
case "SubmittedDateTime":
SubmittedDateTimeLabel = label;
break;
case "InstalledDateTime":
InstalledDateTimeLabel = label;
break;
}
}

基本上我的想法是“将标签映射到具有标签值+“标签”的属性”

最佳答案

您可以通过反射来做到这一点:

foreach (AttributeValue attributeValue in attributeValues)
{
string label = attributes.First(a => a.ID == attributeValue.AttributeID).Name;
string propertyName = attributeValue.AttributeName + "Label";
PropertyInfo pi = GetType().GetProperty(propertyName, BindingFlags.Public | BindingFlags.Instance);
// check for null, if it is possible that property not exists
pi.SetValue(this, label, null);
}

关于c# - 使用大型 switch 语句将数据分配给属性...是否有更动态的方法来执行此操作?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13406612/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com