3

これを書いたら、

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」にしたいのです。Data クラスのみを変更してこれを行う方法はありますか?

4

1 に答える 1

0

希望どおりではありませんが、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>());
于 2013-05-10T07:21:31.973 に答える