迭代地获取c类的所有字段和数据类型

本文关键字:字段 数据类型 获取 迭代 | 更新日期: 2023-09-27 18:27:20

我有用许多字段/变量定义的巨大C#类。每个变量都可以是一个简单的数据类型、列表或其他类。。。。

我想通过子类迭代地转储所有变量及其数据类型。有什么简单的C#函数/代码可以做到这一点吗?

PS:我不是在看运行时对象值。只提取名称和数据类型就足够了。

RK

迭代地获取c类的所有字段和数据类型

您可以尝试创建以下设置。GetData类将把要扫描不同类型的程序集作为其单个参数。然后,这个类将获取它能找到的所有类及其子类,以及它们的字段,并创建一个结构化的XML文件来保存这些数据。

class GetData
{
    public GetData(Assembly assembly)
    {
        var xml = new XDocument(new XElement("root"));
        foreach (var type in assembly.GetTypes())
        {
            var typeElement = new XElement("Class", new XElement("Name", type.Name));
            foreach (var field in type.GetFields())
            {
                typeElement.Add(new XElement("Field",
                    new XElement("Name", field.Name),
                    new XElement("Type", field.FieldType)));
            }
            xml.Root.Add(typeElement);
        }
        Console.WriteLine(xml);
        xml.Save("Dump.xml");
    }
}

你可以用一个内部类创建这个测试类,这样你就可以确保它甚至可以在这种设置中工作。

public class DbClass
{
    public int ID;
    public string Name;
    public class DbChildClass
    {
        public int ChildID;
        public string Company;
    }
}

要从当前执行的程序集中获取所有类型,只需执行以下代码行。

class Program
{
    static void Main()
    {
        new GetData(Assembly.GetExecutingAssembly());
        Console.Read();
    }
}