如果在运行时之前不知道值的名称,如何设置值?

时间:2012-09-05 14:15:56

标签: c# .net reflection

我试图将一个对象的属性设置为与另一个对象的属性相同。这里的代码到目前为止:

private T SetObjectAttributes<T> (dynamic fromO, T toO)
{
    foreach (var prop in fromO.GetType().GetProperties())
    {
        toO[prop] = fromO[prop];
    }
    return toO;
}

此处的语法不正确:

toDbObject[prop] = fromObject[prop];

基本上,我正在尝试设置属性,但直到运行时才知道属性名称。所以我的问题是如何在运行时分配属性的值。

2 个答案:

答案 0 :(得分:0)

您必须分别使用属性的PropertyInfo实例的GetValue( object sourceObject)方法SetValue( object target, object value )

答案 1 :(得分:0)

您想使用PropertyInfo.SetValue来实际设置值。我也希望你能缓存那些PropertyInfo实例 - 因为否则它会非常慢。

您还应该查看ExpandoObject或其他一些选项。

你到底想要做什么?也许有一种更好的方式。