簡體   English   中英

迭代獲取ac#類的所有字段和數據類型

[英]get all fields and datatypes of a c# class iteratively

我有使用許多字段/變量定義的大型C#類。 每個變量可以是簡單的數據類型,也可以是列表或其他類。

我也想通過子類迭代地轉儲所有變量及其數據類型。 有沒有簡單的C#函數/代碼可以做到這一點?

PS:我不在看運行時對象值。 僅提取名稱和數據類型就足夠了。

RK

您可以嘗試創建以下設置。 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();
    }
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM