C# Reflection: установка значений свойств с помощью атрибутов

Чтобы установить значения свойств посредством отражения в C# с использованием атрибутов, вы можете использовать следующие методы:

  1. Получить тип: используйте метод GetType()для экземпляра объекта, чтобы получить информацию о типе.

  2. Получить свойство. Используйте метод GetProperty()для объекта Type, чтобы получить экземпляр PropertyInfo, представляющий нужное свойство. Вы можете указать имя свойства как строковый параметр.

  3. Получить атрибут. Используйте метод GetCustomAttribute()для объекта PropertyInfo, чтобы получить экземпляр атрибута, связанный со свойством. Вы можете указать тип атрибута в качестве параметра.

  4. Установите значение свойства. Если у вас есть экземпляры PropertyInfo и атрибута, вы можете использовать метод SetValue()для объекта PropertyInfo, чтобы установить значение свойства. Вам необходимо указать экземпляр объекта, для которого должно быть установлено свойство, а также новое значение.

Вот пример, демонстрирующий эти шаги:

using System;
using System.Reflection;
public class MyClass
{
    [MyAttribute("Example")]
    public string MyProperty { get; set; }
}
public class MyAttribute : Attribute
{
    public string Value { get; }
    public MyAttribute(string value)
    {
        Value = value;
    }
}
class Program
{
    static void Main()
    {
        MyClass obj = new MyClass();
        Type type = obj.GetType();
        PropertyInfo property = type.GetProperty("MyProperty");
        MyAttribute attribute = property.GetCustomAttribute<MyAttribute>();
        if (attribute != null)
        {
            property.SetValue(obj, "New Value");
            Console.WriteLine(obj.MyProperty); // Output: New Value
        }
    }
}