通过属性名称获取属性

时间:2019-05-02 09:49:18

标签: c# attributes

我试图为类中的属性设置一个值,对于该类,我只有可用的属性信息作为输入。我正在使用下面的代码来解析类中所有属性的所有属性,并在输入中找到匹配项。有没有更好的方法来设置属性值而无需遍历类的所有属性?也许只是从属性名称中获取属性。

var classA = new MyClass();

string str = "MYDouble";
string value = "0.3";

foreach (PropertyInfo propertyInfo in classA.GetType().GetProperties())
{
    object[] attribute = propertyInfo.GetCustomAttributes(typeof(MyCustomAttribute), true);

    if (attribute.Length > 0)
    {
        MyCustomAttribute myAttribute = (MyCustomAttribute) attribute[0];
        string propertyValue = myAttribute.Name;

        if (propertyValue.Equals(str))
        {
            propertyInfo.SetValue(classA, Convert.ChangeType(value, propertyInfo.PropertyType), null);
        }                       
    }
}

如果可能的话,我想要这样的东西

var propertyInfo= classA.GetPropertyInfoBasedOnAttribute("MyDouble");
propertyInfo.SetValue(value.... same as above)

0 个答案:

没有答案