我有以下类结构(伪代码):
Class A
{
Property string Who;
Property string Where;
}
Class B
{
Property A Information;
}
Class C
{
Property String Who;
}
我试图找出如何使用.NET 4.0中的反射设置集B.A.Who = C.Who
。
谢谢!
答案 0 :(得分:3)
嗯,正确地执行排序并不是那么困难,但如果你想要参数验证,优雅的错误处理等,它会变得非常混乱。这是一个应该突出显示的例子技术(没有检查):
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
。