使用.NET中的反射在类中作为属性的对象上设置字段
我有以下类结构(伪代码): 我试图找出如何使用.NET4.0中的反射设置使用.NET中的反射在类中作为属性的对象上设置字段,.net,reflection,.net,Reflection,我有以下类结构(伪代码): 我试图找出如何使用.NET4.0中的反射设置B.A.Who=C.Who 谢谢 好吧,这并不是很难做到的,但是如果你想要参数验证、优雅的错误处理等,它会变得非常混乱。下面是一个例子,应该强调这项技术(无检查): 您需要对上述代码进行各种检查,以使其健壮。如果您能告诉我们为什么要使用反射来完成此任务,这将非常有帮助。根据场景的不同,可能有更合适的解决方案,例如: 显而易见的类型安全代码 根据需要铸造,然后是类型安全代码 通过构造和编译表达式树生成委托 使用动态 AutoM
B.A.Who=C.Who
谢谢 好吧,这并不是很难做到的,但是如果你想要参数验证、优雅的错误处理等,它会变得非常混乱。下面是一个例子,应该强调这项技术(无检查): 您需要对上述代码进行各种检查,以使其健壮。如果您能告诉我们为什么要使用反射来完成此任务,这将非常有帮助。根据场景的不同,可能有更合适的解决方案,例如:
动态
好吧,这并不是很难做到,但是如果你想要参数验证,优雅的错误处理等等,它会变得非常混乱。下面的例子应该强调这项技术(无检查): 您需要对上述代码进行各种检查,以使其健壮。如果您能告诉我们为什么要使用反射来完成此任务,这将非常有帮助。根据场景的不同,可能有更合适的解决方案,例如:
动态
Class A
{
Property string Who;
Property string Where;
}
Class B
{
Property A Information;
}
Class C
{
Property String Who;
}
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);
}