C#类中,我怎么通过遍历的方式取得所有类中的变量的值。
有没有什么办法呢?
各位大侠帮忙一下哦
------解决方案--------------------------------------------------------
用反射咯。
Dim objTest As Test = New Test
Dim objType As Type = GetType(Test)
Dim objFieldInfoArray As System.Reflection.FieldInfo() = _
objType.GetFields(System.Reflection.BindingFlags.NonPublic Or Reflection.BindingFlags.Public Or Reflection.BindingFlags.Instance)
For Each objFieldInfo As System.Reflection.FieldInfo In objFieldInfoArray
MsgBox(objFieldInfo.Name & ":" & objFieldInfo.GetValue(objTest))
Next
Test是一个测试类:
Public Class Test
Protected a As String = "abc"
Private b As String = "xxx"
Private c As String = "ddd"
End Class
------解决方案--------------------------------------------------------
反射 可以实现
需要引用 命名空间 System.Reflection
你可以在百度搜索一下 .NET中的反射 有很详细的说明的
------解决方案--------------------------------------------------------
- C# code
using System;using System.Collections.Generic;using System.Reflection;namespace ConsoleApplication5 { internal class Program { private static void Main(string[] args) { SomeClass obj = new SomeClass(1, "some str"); List<object> values = GetPropertyValues(obj); foreach (object o in values ?? new List<object>()) { Console.WriteLine(o); } Console.ReadLine(); } private static List<object> GetPropertyValues<T>(T t) { List<object> result = new List<object>(); PropertyInfo[] info = typeof (T).GetProperties(BindingFlags.Public | BindingFlags.Instance); foreach (PropertyInfo propertyInfo in info) { result.Add(propertyInfo.GetValue(t, new object[0])); } return result; } private class SomeClass { public SomeClass(int var1, string var2) { this.var1 = var1; this.var2 = var2; } public int Var1 { get { return var1; } } public string Var2 { get { return var2; } } private int var1; private string var2; } }}
------解决方案--------------------------------------------------------
通过反射实现
http://www.cnblogs.com/Dorion/archive/2007/07/02/803413