C# 使用反射和属性名称作为字符串更新类属性

C# 使用反射和属性名称作为字符串更新类属性,c#,reflection,properties,C#,Reflection,Properties,我有一个示例类 public class sampleClass { public string givenName { get; set; } public string familyName { get; set; } } 以及IDictionary dataModel中包含的该类的一组值。我可以使用反射遍历dataModel,并使用dataModel键获取值 我想做一些类似的事情: void UpdateValues(IDictionary<string, obje

我有一个示例类

public class sampleClass
{
    public string givenName { get; set; }
    public string familyName { get; set; }
}
以及
IDictionary dataModel
中包含的该类的一组值。我可以使用反射遍历
dataModel
,并使用
dataModel
键获取值

我想做一些类似的事情:

void UpdateValues(IDictionary<string, object> dataModel)
{
    Type sourceType = typeof(sampleClass);
    foreach (PropertyInfo propInfo in (sourceType.GetProperties()))
    {
        if (dataModel.ContainsKey(propInfo.Name))
        {
            //  set propInfo value here
            propInfo.Value = dataModel[propInfo.Name];
        }
    }
}

救命啊!谢谢

您需要sampleClass的一个实例来设置其属性,然后可以使用SetValue函数来执行此操作:

propInfo.SetValue(yourinstance, dataModel[propInfo.Name], null);

请查看此URL:

非常感谢,这个技巧做得很好。
propInfo.SetValue(yourinstance, dataModel[propInfo.Name], null);
propInfo.SetValue(sampleClass, dataModel[propInfo.Name], null)