Получение свойства через имя атрибута - PullRequest
0 голосов
/ 02 мая 2019

Я пытаюсь установить значение для свойства в классе, для которого у меня есть только атрибутная информация, доступная в качестве входных данных. Я использую код ниже, чтобы проанализировать все атрибуты всех свойств в классе и найти совпадение на моем входе. Есть ли лучший способ установить значение свойства без перебора всех свойств класса? Может быть, просто получить свойство из имени атрибута.

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)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...