开发者

Can I set a property value with Reflection?

开发者 https://www.devze.com 2023-04-12 06:03 出处:网络
I know the name of a property in my C# class. Is it possible to use reflection to set the value of this property?

I know the name of a property in my C# class. Is it possible to use reflection to set the value of this property?

For example, say I know the name of a property is string propertyName = "first_name";. And there actaully ex开发者_开发知识库ists a property called first_name. Can I set it using this string?


Yes, you can use reflection - just fetch it with Type.GetProperty (specifying binding flags if necessary), then call SetValue appropriately. Sample:

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
    }
}

If it's not a public property, you'll need to specify BindingFlags.NonPublic | BindingFlags.Instance in the GetProperty call.

0

精彩评论

暂无评论...
验证码 换一张
取 消

关注公众号