2

我有一个带有一些属性的对象和一个为每个属性保存一个临时值的字典。这个字典的键是一个与属性同名的字符串,而值是一个对象。

我想要做的是构建一个保存方法来读取字典的键并将相应的属性设置为字典中找到的值。

所以我想到了反思,但这并不像我想象的那么容易。

这是一个示例类:

public class Class{
    public string Property1 { get; set; }
    public int Property2 { get; set; }
    public Dictionary<string, object> Settings { get; set; }

    public void Save()
    {
        foreach (string key in Settings.Keys)
        {
            // PSEUDOCODE
            get the property called like the key
            get its type
            get the value of hte key in the dictionary
            cast this object to the property's value
            set the property to the casted object
        }
    }
}

我不发布代码的原因是因为我不明白如何进行强制转换和类似的事情,所以我写了一点伪代码来让你了解我想要实现的目标。

有没有人可以指出我正确的方向?

4

1 回答 1

1

这里:

//Get the type
var type= this.GetType();

foreach (string key in Settings.Keys) 
{
    //Get the property
    var property = type.GetProperty(key);
    //Convert the value to the property type
    var convertedValue = Convert.ChangeType(Settings[key], property.PropertyType);
    property.SetValue(this, convertedValue); 
}

未经测试,但它应该可以工作。

于 2013-09-18T13:12:04.247 回答