Что ж, это не так уж сложно сделать вроде правильно, но было бы очень грязно, если бы вы хотели проверку аргументов, изящную обработку ошибок и т. Д. Вот пример, который должен выделитьтехника (без проверок):
static void SetBsAsWhoToCsWho(object b, object c)
{
// csWho = c.Who
object csWho = c.GetType().GetProperty("Who").GetValue(c, null);
// a = b.Information
object a = b.GetType().GetProperty("Information").GetValue(b, null);
// a.Who = csWho
a.GetType().GetProperty("Who").SetValue(a, csWho, null);
}
Вам нужны все виды проверок в приведенном выше коде, чтобы сделать его надежным.Было бы очень полезно, если бы вы сказали нам , почему вы хотите использовать рефлексию для выполнения этой задачи.В зависимости от сценария могут быть более подходящие решения, такие как:
- Очевидный типобезопасный код.
- Приведение в случае необходимости, за которым следует код, сохраняющий тип.
- Генерация делегата путем построения и компиляции дерева выражений.
- Использование
dynamic
. - AutoMapper и других библиотек.