如何得到一个类或实体的私有字段信息?如通过反射GetFields方法只能得到公有字段,私有字段怎么得到呢?
解决方案 »
- c# Dictionary 怎么用?
- 如何复制Excel行
- form最小化时的问题
- 数组问题
- DataGridView控件选定多行删除的一个问题
- 请大家帮个忙,在winform中的datagrid中,如何把查询出来的英文列名,变换成中文列呢,只在某些方面代码中实现.
- c# winform 导航控件
- C#程序开发数据格式的问题,高手不吝赐教!
- 各位大虾,帮忙啊!关于C#中调用C的DLL的问题。
- c# DataGridView做了分页以后不能即时刷新
- 请问怎样编程从IE Temporary Internet Files文件夹中复制JPG文件到其他目录?(内空)
- 窗体继承后,如何在子类窗体中修改父窗体中控件的事件?
using System.Collections.Generic;
using System.Text;
public class ChangeValue
{
private string myValue="old Value";
public ChangeValue(string str)
{
myValue = str;
}
public void WriteLine()
{
Console.WriteLine("MyValue is: " + myValue);
}
}using System;
using System.Collections.Generic;
using System.Text;
using System.Reflection;namespace TestChangeValue
{
class Program
{
static void Main(string[] args)
{
Assembly objAss = Assembly.LoadFrom(@"ChangeValue.dll");
Type t = objAss.GetType("ChangeValue");
Type[] types = new Type[1];
types[0] = typeof(string);
ConstructorInfo ci = t.GetConstructor(types); //調用帶一string參數構造函數
//object obj = System.Activator.CreateInstance(t);
object[] objs= new object[1]{"old value"};
object obj = ci.Invoke(objs);
MethodInfo mi = t.GetMethod("WriteLine");//調用writeline方法
mi.Invoke(obj, null); FieldInfo fi = t.GetField("myValue", //調用私有變量
BindingFlags.NonPublic |BindingFlags.Instance);
fi.SetValue(obj, "new Value"); //改寫私有變量
mi.Invoke(obj, null);
Console.ReadLine();
}
}
}