首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Sgen.exe中的错误

Sgen.exe中的错误
EN

Stack Overflow用户
提问于 2009-07-30 07:08:33
回答 1查看 578关注 0票数 1

看起来sgen.exe不能生成泛型类型XmlSerializer,对吧?

我的泛型类型:

代码语言:javascript
复制
[Serializable]
[XmlRoot(ElementName = "Masterx")]
public class Masterx<T> where T : class, new()
{....}

序列化程序代码:

代码语言:javascript
复制
 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;
    }

运行sgen.exe并使用Reflector检查生成的程序集后,我发现生成的程序集不包含MasterxXmlSerializer类,为什么?

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

EN

回答 1

Stack Overflow用户

发布于 2010-02-02 07:31:07

不,sgen不会为开放泛型类型生成序列化程序。作为XmlSerializer的一般规则,如果无法通过静态分析获得整个模式,则预先生成的程序集不会有任何帮助。

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

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/1204913

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档