//下面例子中, ChangeValue类的myValue本是私有字段,
//一般情况下在类外部是不能改它的值的, 但利用反射就能改了
//-----------------------------------------------------
using System;
using System.Reflection;/* 引用反射技术命名空间 */
/* 待修改值的类 */
class ChangeValue
{
private int myValue;/* 私有变量 */
/* 构造函数*/
public ChangeValue(int value)
{
myValue = value;
}
/* 打印值 */
public void ValuePrint()
{
Console.WriteLine("MyValue is: " + myValue);
}
}
class Test
{
public static void Main(string[] args)
{
ChangeValue cv = new ChangeValue(1);/* 旧值为1 */
Console.WriteLine("旧值");
cv.ValuePrint();
Console.WriteLine("\r\n");
Type t = cv.GetType();
FieldInfo field = t.GetField("myValue", /*要访问的私有变量名 myValue*/
BindingFlags.NonPublic | BindingFlags.Instance);
field.SetValue(cv, 2); /* 新值为2 */
Console.WriteLine("新值");
cv.ValuePrint();
Console.Read();
}
}
C#利用反射技术访问私有变量
最新推荐文章于 2022-07-24 18:30:59 发布