我有一个对象用户:
public class User
{
public String Name { get; set; }
public String Name2 { get; set; }
public String Name3 { get; set; }
}
此外,我还有一个Key Value字符串集,我想在创建它时将其分配给对象的属性:
'Name':'srgrgsdfsdf'
'Name3':'dsfdsfafafd'
'Name2':'dtewtwerwer'
'Name4':'546353452552'
现在我像这样创建我的对象
User user = new User();
user.Name = "zzxasdas";
问题在于我希望能够动态分配键/值数据。这意味着某些项目可能会丢失或订单可能不同。
如何动态检查对象属性的名称,并将其与Key进行比较,如下所示:?
foreach [key] in Key/Value
if [user] has property named [key]
add [value] to [user] property with the name [key]
答案 0 :(得分:3)
您需要使用Reflection来执行此操作。
特别是,Type.GetProperties
或Type.GetProperty
将允许您发现有关在类型上定义的属性的信息,并获取或设置其值。
这可能类似于:
User user = new User();
Type t = user.GetType();
foreach(var kvp in propertyDictionary)
{
var prop = t.GetProperty(kvp.Key);
if (prop != null)
prop.SetValue(user, kvp.Value);
}
答案 1 :(得分:0)
我想到了两件事。
一个显然是使用Reflection API。例如,如果user.GetType()。GetProperty()等。
其次,AutoMapper可能是一个解决方案,它将属性从一个对象复制到另一个具有相同名称的对象