字典<string,object =“”>到对象</string,>

时间:2011-12-30 07:54:59

标签: c# object dictionary

转换此词典的最佳方式是:

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;}
}

4 个答案:

答案 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"]
}

通用方式:使用反射。