请问如何获得,程序作用域里的所有变量?比如:
1。一个method范围内, 里面定义了N个local变量, 我该如何列举出当前method的这些变量?
2。一个类里, 里面定义了N个local和public的变量, 我该如何列举出当前类中的这些变量?谢谢!请给实例代码,谢谢!
1。一个method范围内, 里面定义了N个local变量, 我该如何列举出当前method的这些变量?
2。一个类里, 里面定义了N个local和public的变量, 我该如何列举出当前类中的这些变量?谢谢!请给实例代码,谢谢!
解决方案 »
- C# 怎么修改静态类中的 静态私有成员的值啊。急。。。
- 最后一行,列单元格被选中
- 急.急.急.各位大侠.c#怎样导数据倒excel的时候 导的是本地已经存在的excel 而不是新打开的excel
- 【跪求】2个DATAGRIDVIEW联动 和 DATAGRIDVIEW联动textbox等控件的例子
- C#winform调用mouse_event必须调用两次右键down才能调出右键菜单
- 关于CD和SPDIF的问题。
- 如何访问网络文件?
- 某个时间段内没有值,以默认值补充
- 10QB急求 !C#编辑和删除IIS6.0的扩展名映射(改变.net的版本)
- 如何让datagrid其中的一列enabled = false?
- C#数组 与DataTable 问题
- C# 写的窗体组件(ACTIVEX)应用在IE里。
{
private string _local1;
private bool _local2;
public string public1;
public object public2;
public void Foo()
{
int local1 = 10;
int local2 = 100;
Console.WriteLine(local1 + local2);
}
} class Program
{
static void Main(string[] args)
{
Type type = typeof (Demo);
BindingFlags flags = BindingFlags.Static |
BindingFlags.Instance |
BindingFlags.Public |
BindingFlags.NonPublic;
// 获取所有变量
foreach (FieldInfo fieldInfo in type.GetFields(flags))
{
Console.WriteLine(fieldInfo.Name);
}
// 所有方法
foreach (MethodInfo methodInfo in type.GetMethods(flags))
{
MethodBody body = methodInfo.GetMethodBody();
if(body == null)
{
continue;
} // 所有局部变量。局部变量的名称似乎没法获取
foreach (LocalVariableInfo variable in body.LocalVariables)
{
Console.WriteLine(variable);
}
}
Console.ReadLine();
}
其实Reflector的早期版本是看不到的。
后来的版本中,Reflector是依靠Pdb文件得到这些信息的。对于用户自己写的Dll,只有当dll和pdb文件在同一目录下的时候才可以用reflector看到变量名。
foreach (FieldInfo fieldInfo in type.GetFields(flags))
{
Console.WriteLine(fieldInfo.Name);
Console.WriteLine(fieldInfo.GetValue(demo)); // 变量值
}