当前位置: 代码迷 >> ASP.NET >> 请教C#类的有关问题
  详细解决方案

请教C#类的有关问题

热度:7210   发布时间:2013-02-25 00:00:00.0
请问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
  相关解决方案