![](/img/trans.png)
[英]UNITY C# - How can I get all the fields of the an instance of a class marked with my custom atribute(the fields)?
[英]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.