📅  最后修改于: 2023-12-03 15:25:23.850000             🧑  作者: Mango
在 C# 中,利用反射可以访问和修改属性。本文将以stackoverflow.com网站为例,介绍利用反射更新变量的方法。
using System.Reflection;
var stackOverflow = new StackOverflow(); // 初始化 StackOverflow 实例
var variable = typeof(StackOverflow).GetProperty("site"); // 获取 StackOverflow 类中的 site 属性
var site = (string)variable.GetValue(stackOverflow); // 获取 site 属性的值
解释:首先需要创建一个 StackOverflow 类的实例。然后使用反射获取 StackOverflow 类中名为 site 的属性。最后使用 GetValue() 方法获取该属性的值,并强制转换为 string 类型。
var newSite = "https://stackoverflow.com/"; // 新的站点地址
variable.SetValue(stackOverflow, newSite); // 设置 site 属性的值为新地址
解释:首先定义一个新的站点地址。然后使用 SetValue() 方法将 stackOverflow 实例的 site 属性值改为新站点地址。
using System.Reflection;
public class StackOverflow
{
public string site = "https://stackoverflow.cn/"; // 初始站点地址
}
class Program
{
static void Main(string[] args)
{
var stackOverflow = new StackOverflow(); // 初始化 StackOverflow 实例
var variable = typeof(StackOverflow).GetProperty("site"); // 获取 StackOverflow 类中的 site 属性
var site = (string)variable.GetValue(stackOverflow); // 获取 site 属性的值
Console.WriteLine("原始站点地址:" + site);
var newSite = "https://stackoverflow.com/"; // 新的站点地址
variable.SetValue(stackOverflow, newSite); // 设置 site 属性的值为新地址
Console.WriteLine("更新后的站点地址:" + stackOverflow.site);
}
}