日期:2014-05-18  浏览次数:20412 次

请问C#类的问题
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.html