如果您希望能夠對任何對象進行一般操作,則可以使用反射。假設在字典中的值是合適的類型,無需轉換:
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);
退房這個環節,它可以幫助回答你的問題的http://blog.andreloker .de/post/2008/05/03/Anonymous-type-to-dictionary-using-DynamicMethod.aspx – MethodMan 2011-12-30 07:59:44
我想從Select數據庫查詢中返回對象。 – 2011-12-30 08:02:49
我認爲Dictionary類有一個誤解。您似乎會將字典的兩個不同元素與一個語義對象相對應。你需要的東西似乎是一個Dictionary對象,它有一個映射到Person對象的int對象。 – 2011-12-30 08:02:53