📜  c#反射获取属性值数组 - C#(1)

📅  最后修改于: 2023-12-03 14:59:44.224000             🧑  作者: Mango

C#反射获取属性值数组

在C#中,反射(Reflection)指的是代码在运行时能够对自身进行分析、了解和修改的能力。通过反射,可以动态地加载程序集并使用其中的类型、方法以及属性等元素。

本文将介绍如何使用C#反射获取属性值数组。

反射获取属性值数组

C#反射获取属性值数组可以通过以下步骤实现:

步骤1:获取类型实例

首先,我们需要获取目标类型的实例。此处以获取Example类实例为例。代码如下:

Example example = new Example();
步骤2:获取属性信息

接下来,我们需要获取目标类型属性的信息。代码如下:

Type type = example.GetType();
PropertyInfo[] properties = type.GetProperties();

其中,type是通过GetType()方法获取到的类型信息;properties是获取到的属性信息数组。

步骤3:获取属性值数组

通过属性信息数组,我们可以遍历获取属性值数组。代码如下:

List<object> propertyValues = new List<object>();
foreach (var propertyInfo in properties)
{
    propertyValues.Add(propertyInfo.GetValue(example));
}

其中,propertyValues是存储属性值的列表。遍历属性信息数组时,通过GetValue(example)方法获取对应属性的值,并将其添加到propertyValues列表中。

示例代码

下面的示例代码演示了如何使用C#反射获取属性值数组:

using System;
using System.Collections.Generic;
using System.Reflection;

namespace ConsoleApp
{
    public class Example
    {
        public int Id { get; set; }
        public string Name { get; set; }
    }
    
    class Program
    {
        static void Main(string[] args)
        {
            Example example = new Example { Id = 1, Name = "Test" };
            
            Type type = example.GetType();
            PropertyInfo[] properties = type.GetProperties();
            
            List<object> propertyValues = new List<object>();
            foreach (var propertyInfo in properties)
            {
                propertyValues.Add(propertyInfo.GetValue(example));
            }
            
			Console.WriteLine("属性值数组: [" + string.Join(", ", propertyValues) + "]");
        }
    }
}

输出结果为:

属性值数组: [1, Test]
总结

本文介绍了如何使用C#反射获取属性值数组,包括获取类型实例、获取属性信息和获取属性值数组等步骤。通过本文的示例代码,希望读者可在实际开发中灵活运用反射技术,提高代码的可扩展性、灵活性和可靠性。