使不可序列化的供应商类可序列化

时间:2016-09-12 20:48:11

标签: c# serialization xml-serialization

我正在使用供应商的DLL中的一个类,该类不是XML可序列化的,因为其中一个类成员是一个接口。

但是,我确实需要序列化该类的实例。

如何告诉XmlSerializer忽略接口并序列化其他所有内容?

1 个答案:

答案 0 :(得分:0)

你可以做两件事:

1)创建一个包含所需内容的类,使用您的供应商类填充它,然后对其进行序列化。

检查adapter design pattern

2)使用Json.Net。一旦我需要序列化具有元数据的IPagedList,我就这样做了:

    public static string SerializePagedList(IPagedList<T> pagedList)
    {
        string result = JsonConvert.SerializeObject(
           // new anonymous class with everything I wanted
            new
            {
                Items = pagedList,
                MetaData = pagedList.GetMetaData()
            },
            new JsonSerializerSettings
            {
                NullValueHandling = NullValueHandling.Ignore,
                ReferenceLoopHandling = ReferenceLoopHandling.Ignore
            });
        return result;
    }

我希望它有所帮助。