转换此词典的最佳方式是:
Dictionary<string, object> person = new Dictionary<string, object>();
person.Add("ID", 1);
person.Add("Name", "Alex");
对象:
public class Person
{
public int ID{get;set;}
public string Name{get;set;}
}
答案 0 :(得分:4)
这是我的建议:
var newPerson = new Person
{
ID = (int)person["ID"],
Name = person["Name"].ToString()
};
这没有错误处理,并且假设字段中存在字段并且填充了有效值!
答案 1 :(得分:2)
如果您希望能够对任何对象执行此操作,则可以使用反射。假设字典中的值是合适的类型,不需要转换:
static T GetObject<T>(Dictionary<string, object> dict)
where T : new()
{
var obj = new T();
foreach (var property in typeof(T).GetProperties())
{
var args = new object[1];
var setter = property.GetSetMethod(); // property has a public setter
if (setter != null && dict.TryGetValue(property.Name, out args[0]))
setter.Invoke(obj, args);
}
return obj;
}
然后使用它:
var alexDict = new Dictionary<string, object>
{
{ "ID", 1 },
{ "Name", "Alex" },
};
var alexPerson = GetObject<Person>(alexDict);
答案 2 :(得分:0)
Person myPerson = new Person();
myPerson.ID = (int)person["ID"];
myPerson.Name = (string)person["Name"];
不使用int cast进行错误检查。
答案 3 :(得分:0)
简单方法:
var person = new Person
{
Id = (int)dict["ID"],
Name = (string)dict["Name"]
}
通用方式:使用反射。