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.
精彩评论