首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >DataContractSerializer

DataContractSerializer
EN

Stack Overflow用户
提问于 2012-03-27 09:26:27
回答 2查看 524关注 0票数 1

我有以下课程

代码语言:javascript
复制
    [DataContract(Namespace = "", Name = "VersionRange")]
    public sealed class VersionRange
    {
        [DataMember(Name = "Lower")]
        private readonly Version _lower;

        [DataMember(Name = "Upper")]
        private readonly Version _upper;

        public VersionRange(Version lower, Version upper)
        {
            _lower = lower;
            _upper = upper;
        }
    }

我希望它能够从下面的XML序列化为de

代码语言:javascript
复制
<?xml version="1.0" encoding="utf-8"?>
<VersionRange>
    <Lower>1.2.3.4</Lower>
    <Upper>5.6.7.8</Upper>
</VersionRange>

我试图通过实现IDataContractSurrogate来归档这个文件,但是没有成功。当我在typeof(string)中返回typeof(Version)GetDataContractType方法时,反序列化失败,并且不调用GetDeserializedObject方法。

那么,是否有机会使用标准版本类并使其从"a.b.c.d"字符串中反序列化?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2012-03-27 09:51:42

一种方法是反序列化为string属性,然后在属性的set方法中将值转换为版本。

代码语言:javascript
复制
[DataMember(Name = "Lower")]
private string _lowerStr
{
    set
    {
        _lower = new Version(value);
    }
}

private Version _lower;

/// and the same for Upper.

我见过这种常用的解析日期时间值的方法,这些值可能带有模糊的格式。

票数 1
EN

Stack Overflow用户

发布于 2012-03-27 10:30:13

好像你读错了XML。正确的XML应该是这样的。

代码语言:javascript
复制
    <?xml version="1.0" encoding="utf-16"?>
<VersionRange xmlns:i="http://www.w3.org/2001/XMLSchema-instance">
  <Lower xmlns:d2p1="http://schemas.datacontract.org/2004/07/System">
    <d2p1:_Build>1</d2p1:_Build>
    <d2p1:_Major>12</d2p1:_Major>
    <d2p1:_Minor>1</d2p1:_Minor>
    <d2p1:_Revision>3</d2p1:_Revision>
  </Lower>
  <Upper xmlns:d2p1="http://schemas.datacontract.org/2004/07/System">
    <d2p1:_Build>1</d2p1:_Build>
    <d2p1:_Major>12</d2p1:_Major>
    <d2p1:_Minor>1</d2p1:_Minor>
    <d2p1:_Revision>3</d2p1:_Revision>
  </Upper>
</VersionRange>
票数 -1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/9886704

复制
相关文章

相似问题

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