C#中一个简单的使用反射显示类中的所有变量的方法

如果一个类中,有很多的属性,我们在显示的时候,需要逐一进行展示,很是麻烦。利用反射技术,我们可以很方便进显示。

先看代码:

 示例一:

public calss Values
{
    public int ID = 1;
    public double Value1 = 1.5;
    public double Value2 = 2.6;

        /// <summary>
        /// 显示所有字段内容。
        /// </summary>
        public void Show()
        {
            foreach (FieldInfo fi in GetType().GetFields())
                Console.WriteLine($"{fi.FieldType} {fi.Name}: {fi.GetValue(this)}");
        }
}     

运行代码为:new Values().Show();,则显示内容如下:

System.Int32 ID: 1
System.Double Value1: 1.5
System.Double Value2: 2.6
代码中的显示函数 Show() 中,包括以下几个内容:

    GetType()
    用于返回当前对象的类型 Type。
    GetFields()
    返回当前类型的所有字段
    FieldInfo
    字段的属性,包括字段的名称,数据类型,作用域等。
    fi.GetValue(this)
    fi 是 FieldInfo的对象,比如代表的就是ID字段,那么当调用这个函数的时候,就会从this这个对象中的ID字段获得其值。

 示例二:

public class Person
{
     public string Name { get; set; }
     public int ID { get; set; }
}

2、获取属性

方法一、定义一个类的对象获取

 

Person p = new Person();
foreach (System.Reflection.PropertyInfo info in p.GetType().GetProperties())
{
    Console.WriteLine(info.Name);
}

 

方法二、通过类获取

 

var properties = typeof(Person).GetProperties();
foreach (System.Reflection.PropertyInfo info in properties)
{
   Console.WriteLine(info.Name);
}

 

3、通过属性名获取属性值

 

p.Name = "张三";
var name = p.GetType().GetProperty("Name").GetValue(p, null);
Console.WriteLine(name);

 

4、完整代码及结果显示

var properties = typeof(Person).GetProperties();
foreach (System.Reflection.PropertyInfo info in properties)
{
   Console.WriteLine(info.Name);
}
Console.WriteLine("另一种遍历属性的方法:");
 
Person p = new Person();
foreach (System.Reflection.PropertyInfo info in p.GetType().GetProperties())
{
   Console.WriteLine(info.Name);
}
            
 Console.WriteLine("通过属性值获取属性:");
 
p.Name = "张三";
var name = p.GetType().GetProperty("Name").GetValue(p, null);
Console.WriteLine(name);
Console.ReadLine();

 

posted @ 2023-04-19 09:17  恋上微笑的天使  阅读(117)  评论(0编辑  收藏  举报