如何在c#属性中使用字符串格式?

时间:2018-06-17 09:43:26

标签: c# string.format

这是我的代码的一部分:

kubectl -n my-process-namespace exec -it my-process-pod-name my_process_start_command /my_root_work_folder/process_folder_y

如何通过类似

的方式减少代码
if (domainNumberText == setting.NumberofDomains3AttributeValueId.ToString())
{
    numberOfDomain = 3;
    listOfDomain.Add(DomainHelper.ReturnAttrributeText(setting.Domain31AttributeId, attributeXml));
    listOfDomain.Add(DomainHelper.ReturnAttrributeText(setting.Domain32AttributeId, attributeXml));
    listOfDomain.Add(DomainHelper.ReturnAttrributeText(setting.Domain33AttributeId, attributeXml));
}

有可能吗?

2 个答案:

答案 0 :(得分:0)

您可以使用反射来执行此操作,但可能更好的解决方案是将信息保存在字典中。

<强>反射

settings.GetType().GetProperty($"Domain{numberofDomain}{i}AttributeId").GetValue(settings) as string

答案 1 :(得分:0)

感谢您的帮助。我通过一些更改来做到这一点(不完全适用于第一个示例代码:)

for (int i = 1; i <= 5; i++){
    var numberofDomainsXAttributeValueId = setting.GetType().GetProperty($"NumberofDomains{i}AttributeValueId")
                                                                                         ?.GetValue(setting);
    if (numberofDomainsXAttributeValueId != null 
        && idOfNumberOfDomoinOrMulti == (int) numberofDomainsXAttributeValueId)
    {
        numberOfDomain = i;
        break;
    }
}