Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/loops/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
.net Sgen.exe中的错误_.net_Xml Serialization_Sgen - Fatal编程技术网

.net Sgen.exe中的错误

.net Sgen.exe中的错误,.net,xml-serialization,sgen,.net,Xml Serialization,Sgen,似乎sgen.exe无法生成泛型类型XmlSerializer,对吗? 我的通用类型: [Serializable] [XmlRoot(ElementName = "Masterx")] public class Masterx<T> where T : class, new() {....} [可序列化] [XmlRoot(ElementName=“Masterx”)] 公共类Masterx,其中T:class,new() {....} 序列化程序代码: protected

似乎sgen.exe无法生成泛型类型XmlSerializer,对吗?
我的通用类型:

[Serializable]
[XmlRoot(ElementName = "Masterx")]
public class Masterx<T> where T : class, new()
{....}
[可序列化]
[XmlRoot(ElementName=“Masterx”)]
公共类Masterx,其中T:class,new()
{....}
序列化程序代码:

 protected virtual List<T> ParseXMLToObject<T>(string resultXML) where T : class, new()
    {
        //return ParseXMLToObject<T>(resultXML, "Masterx");
        XmlSerializer xs = new XmlSerializer(typeof(Masterx<T>));
        System.IO.StringReader sr = new System.IO.StringReader(resultXML);
        XmlReader xr = XmlReader.Create(sr);

        Masterx<T> masterx = null;
        if (!string.IsNullOrEmpty(resultXML))
        {
            if (xs.CanDeserialize(xr))
            {
                //Parse the xml to object
                masterx = xs.Deserialize(xr) as Masterx<T>;
            }
        }
        List<T> rtnObjList = new List<T>();
        if (masterx != null)
        {
            rtnObjList = masterx.MasterxRowList;
        }
        return rtnObjList;
    }
受保护的虚拟列表ParseXMLToObject(字符串resultXML),其中T:class,new()
{
//返回ParseXMLToObject(resultXML,“Masterx”);
XmlSerializer xs=新的XmlSerializer(typeof(Masterx));
System.IO.StringReader sr=新的System.IO.StringReader(结果XML);
XmlReader xr=XmlReader.Create(sr);
Masterx Masterx=null;
如果(!string.IsNullOrEmpty(resultXML))
{
if(x.坎迪塞里亚化(xr))
{
//将xml解析为对象
masterx=xs。反序列化(xr)为masterx;
}
}
List rtnObjList=新列表();
if(masterx!=null)
{
rtnObjList=masterx.masterx行列表;
}
返回rtnObjList;
}
运行sgen.exe并使用“Reflector”检查生成的程序集后,我发现生成的程序集不包含MasterxXmlSerializer类,为什么


有人有同样的经历吗?如何修复它?

否,
sgen
不会为开放泛型类型生成序列化程序。作为XmlSerializer的一般规则,如果您没有通过静态分析获得整个架构,那么预生成的程序集就没有任何帮助


因此,如果使用泛型,则需要在代码中定义所有派生子类,以便能够使用预生成的程序集。

似乎没有人知道我的问题:(