[英]Can I set a property value with Reflection?
我知道我的C#類中的屬性名稱。 是否可以使用反射來設置此屬性的值?
例如,假設我知道屬性的名稱是string propertyName = "first_name";
。 並且存在一個名為first_name
的屬性。 我可以用這個字符串設置它嗎?
是的,您可以使用反射 - 只需使用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
調用中的BindingFlags.NonPublic | BindingFlags.Instance
。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.