gpt4 book ai didi

c# - 使用 C# 类中的填充值生成模拟 XML 的工具

转载 作者:行者123 更新时间:2023-11-28 21:24:51 27 4
gpt4 key购买 nike

有时,在使用遗留代码时,我会得到巨大的对象,我需要模拟它们才能通过应用程序...具有大约 200 个属性的对象

有没有一种方法可以从填充了值的 C# 类生成模拟 xml 对象,而不是手动构建对象?例如:

public Class Animal
{
public bool hasWings {get; set;}
public string name {get; set;}
public int numberOfFeet {get; set;}
}

会变成:

<Animal>
<hasWings>true</hasWings>
<name>string</name>
<numberOfFeet>0</numberOfFeet>
</Animal>

我不需要实际的真实值...只是占位符

谢谢!

最佳答案

您可以使用以下方法完成工作。这将创建一个默认填写值的对象:更新:添加了递归调用来处理类类型的属性

private static object GetDummyObject(Type type)
{
var obj = Activator.CreateInstance(type);
if (obj != null)
{
var properties = obj.GetType().GetProperties(BindingFlags.Instance | BindingFlags.DeclaredOnly | BindingFlags.Public);

foreach (var property in properties)
{
if (property.PropertyType == typeof(String))
{
property.SetValue(obj, property.Name.ToString(), null);
}
else if (property.PropertyType.IsArray)
{
property.SetValue(obj, Array.CreateInstance(type.GetElementType(), 0), null);
}
else if (property.PropertyType.IsClass)
{
var ob = GetDummyObject(property.PropertyType);
property.SetValue(obj, ob, null);
}
else
{
var o = GetDefault(property.PropertyType);
property.SetValue(obj, o, null);
}
}
}

return obj;
}

public static object GetDefault(Type type)
{
return Activator.CreateInstance(type);
}

有一些限制。这只会为默认构造函数生成对象,但您始终可以扩展它。

现在,如果您需要 XML,那么只需序列化从此方法返回的对象即可。

关于c# - 使用 C# 类中的填充值生成模拟 XML 的工具,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43379293/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com