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