我有大量的 C# 类,其中定义了许多字段/变量。每个变量可以是一个简单的数据类型或一个列表或另一个类......
我也想通过子类迭代地转储所有变量及其数据类型。是否有任何简单的 C# 函数/代码来执行此操作?
PS:我不是在查看运行时对象值。只需提取名称和数据类型就足够了。
RK
我有大量的 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();
}
}