C# .Net XmlSerializer输出数据类型

C# .Net XmlSerializer输出数据类型,c#,.net,xml,xml-serialization,xmlserializer,C#,.net,Xml,Xml Serialization,Xmlserializer,我有一个方法,它接受一个对象并将其转换为XML字符串。这非常有效,但我希望输出XML包含对象属性(string、int、double等)的数据类型。我到处搜索,但如果不编写自定义序列化程序,我似乎找不到解决方案 任何帮助都将不胜感激 private static string ToXML<t>(t obj, bool indent = false) { System.Xml.Serialization.XmlSerializerNamespaces ns = new Syst

我有一个方法,它接受一个对象并将其转换为XML字符串。这非常有效,但我希望输出XML包含对象属性(string、int、double等)的数据类型。我到处搜索,但如果不编写自定义序列化程序,我似乎找不到解决方案

任何帮助都将不胜感激

private static string ToXML<t>(t obj, bool indent = false)
{
    System.Xml.Serialization.XmlSerializerNamespaces ns = new System.Xml.Serialization.XmlSerializerNamespaces();
    XmlSerializer xs = new XmlSerializer(typeof(t));
    StringBuilder sbuilder = new StringBuilder();
    var xmlws = new System.Xml.XmlWriterSettings() {OmitXmlDeclaration = true, Indent = indent};

    ns.Add(string.Empty, string.Empty);

    using (var writer = System.Xml.XmlWriter.Create(sbuilder, xmlws))
    {
        xs.Serialize(writer, obj, ns);
    }

    string result = sbuilder.ToString();

    ns = null;
    xs = null;
    sbuilder = null;
    xmlws = null;

    return result;
}
私有静态字符串ToXML(t obj,bool indent=false)
{
System.Xml.Serialization.xmlsializationerNamespaces ns=new System.Xml.Serialization.xmlsializationerNamespaces();
XmlSerializer xs=新的XmlSerializer(typeof(t));
StringBuilder sbuilder=新StringBuilder();
var xmlws=new System.Xml.XmlWriterSettings(){OmitXmlDeclaration=true,Indent=Indent};
ns.Add(string.Empty,string.Empty);
使用(var writer=System.Xml.XmlWriter.Create(sbuilder,xmlws))
{
序列化(writer、obj、ns);
}
字符串结果=sbuilder.ToString();
ns=null;
xs=null;
sbuilder=null;
xmlws=null;
返回结果;
}

NET中的
XmlSerializer
设计用于与自身协同工作,使用具体的对象类型重新序列化,以确定如何处理来自XML的数据

标准的
XmlSerializer
不会为您序列化该信息


您应该查看WCF中的
DataContractSerializer
,据我所知,它更详细,假设更少。它也非常灵活。

此外,还有一个样式建议-使用大写字母或以大写字母开头的标识符来表示泛型的类型参数。这是微软推荐的做法,理由充分;乍一看,代码的读者知道“T”是传递到方法中的类型参数,而不是对象本身。顺便说一句,在C语言中,您不需要将局部变量分配给
null
。。。。