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)