protobuf-net替代DateTimeOffset

时间:2019-01-14 19:08:27

标签: protobuf-net datetimeoffset

我想为Nullable设置代理。我查看了各种示例,我认为我所做的是正确的:

[ProtoContract]
public class DateTimeOffsetProxy
{
    [ProtoMember(1)] public DateTime? UtcTime;

    public static implicit operator DateTimeOffsetProxy(DateTimeOffset? value)
    {
        return new DateTimeOffsetProxy() {UtcTime = value?.UtcDateTime};
    }

    public static implicit operator DateTime?(DateTimeOffsetProxy value)
    {
        return value.UtcTime;
    }
}

然后我要做的是一个静态构造函数:

Model = RuntimeTypeModel.Default;
Model.AllowParseableTypes = true;           
Model.Add(typeof(DateTimeOffset?),false)
.SetSurrogate(typeof(DateTimeOffsetProxy));

在致电Add时,我遇到了以下异常:

System.ArgumentException:此类型的数据具有固有的行为,因此不能通过以下方式添加到模型中:System.Nullable`1 [[System.DateTimeOffset,mscorlib,Version = 4.0.0.0,Culture = neutral,PublicKeyToken = b77a5c561934e089]]

我不确定为什么要说存在内在行为,因为我尝试这样做的原因是解决了使用DateTimeOffset序列化类的此异常:

----> System.InvalidOperationException:未为以下类型定义序列化程序:System.DateTimeOffset

我们在代码中的很多地方都使用了DateTimeOffset和Nullable,所以我想提出一些通用的方法。

有人可以指出我的错误吗?

0 个答案:

没有答案