Как мы можем достать экземпляр и присвоить его значение? - PullRequest
0 голосов
/ 09 мая 2018

У меня есть foreach блок кода в методе, я использую это много мест.

"Title" - это свойство типа String класса "UsefulLinks", о котором я упоминаю "Before". Но я хочу присвоить это свойство моей переменной 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;
        }

Ответы [ 2 ]

0 голосов
/ 09 мая 2018

Вы можете использовать отражение (упомянутое @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
         );
}
0 голосов
/ 09 мая 2018

Либо создайте оператор 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;
        // ...
    }

}

или используйте отражение, чтобы присвоить свойству .

...