Хороший способ присвоить свойство методом расширения - PullRequest
0 голосов
/ 16 ноября 2018

Я нахожусь в ситуации, когда я могу использовать AutoMapper. Но имена свойств в моих объектах отличаются, и сопоставление AutoMapper потребует дополнительных усилий для этого лишь одного нечетного использования.

вот мой код выглядит сейчас

ObjectOne.PropOne = ObjectOne.PropOne.CopyFrom(ObjectTwo.PropX)

Метод расширения выглядит следующим образом -

public static T CopyFrom<T, U>(this T target, U source)
{
    bool isValidString = (source is string && source != null && !string.IsNullOrEmpty(source.ToString()));
    bool isValidNonString = (!(source is string) && source != null);

    if (isValidString || isValidNonString)
        target = Utils.GetValue<T>(source);

    return target;
}

есть ли способ, где я могу избежать назначения и могу сделать, как показано ниже?

ObjectOne.PropOne.CopyFrom(ObjectTwo.PropX)

1 Ответ

0 голосов
/ 16 ноября 2018

Вы можете использовать:

public static void CopyFrom<T, U>(ref this T target, U source)
{
     bool isValidString = (source is string && source != null && !string.IsNullOrEmpty(source.ToString()));
     bool isValidNonString = (!(source is string) && source != null);

     if (isValidString || isValidNonString)
         target = Utils.GetValue<T>(source);
}

, но учтите, что ref-методы расширения доступны только в C # 7.2+

...