[英]Tool to Generate Mock XML With Filled in Values From C# Class
有时在使用遗留代码时,我会得到巨大的对象,我需要进行模拟才能通过应用程序……具有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,则只需序列化此方法返回的对象即可。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.