Могу ли я установить значение свойства с помощью Reflection? - PullRequest
25 голосов
/ 11 октября 2011

Я знаю имя свойства в моем классе C #. Можно ли использовать отражение, чтобы установить значение этого свойства?

Например, скажем, я знаю, что имя свойства string propertyName = "first_name";. И в действительности существует свойство под названием first_name. Могу ли я установить его, используя эту строку?

1 Ответ

63 голосов
/ 11 октября 2011

Да, вы можете использовать отражение - просто выберите его с помощью Type.GetProperty (с указанием флагов привязки, если необходимо), а затем вызовите SetValue соответственно.Пример:

using System;

class Person
{
    public string Name { get; set; }
}

class Test
{
    static void Main(string[] arg)
    {
        Person p = new Person();
        var property = typeof(Person).GetProperty("Name");
        property.SetValue(p, "Jon", null);
        Console.WriteLine(p.Name); // Jon
    }
}

Если это не публичная собственность, вам нужно будет указать BindingFlags.NonPublic | BindingFlags.Instance в вызове GetProperty.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...