仅针对特定类型参数重命名泛型xml元素
本文关键字:重命名 泛型 xml 元素 类型参数 | 更新日期: 2023-09-27 18:12:52
如果我这样写,
class Program
{
static void Main(string[] args)
{
using (FileStream s = new FileStream("output.xml", FileMode.Create))
{
new XmlSerializer(typeof(Data<Item>)).Serialize(s, new Data<Item>());
}
}
}
[XmlType(TypeName = "Content")]
public class Item
{
}
public class Data<T>
{
}
output.xml将是
<?xml version="1.0"?>
<DataOfItem xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" />
,但我想"DataOfItem"是"DataOfContent"。有没有办法做到这一点,只改变数据类?
不完全是您想要的,但是您可以在创建XmlSerializer时提供一个自定义根名称。这样的:
var xmlTypeAttr = typeof(Item).GetCustomAttributes(true).OfType<XmlTypeAttribute>().FirstOrDefault();
var customRoot = new XmlRootAttribute("DataOf" + xmlTypeAttr.TypeName);
new XmlSerializer(typeof(Data<Item>), customRoot).Serialize(s, new Data<Item>());