Я пытаюсь установить значение для свойства в классе, для которого у меня есть только атрибутная информация, доступная в качестве входных данных. Я использую код ниже, чтобы проанализировать все атрибуты всех свойств в классе и найти совпадение на моем входе. Есть ли лучший способ установить значение свойства без перебора всех свойств класса? Может быть, просто получить свойство из имени атрибута.
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)