【问题标题】:Can IDataContractSurrogate be used with Azure reliable service and/or actors?IDataContractSurrogate 能否与 Azure 可靠服务和/或参与者一起使用?
【发布时间】:2016-09-29 20:02:55
【问题描述】:

使用 Azure Service Fabric,我尝试在有状态服务和参与者中序列化不可变类型。显然数据契约序列化程序不支持,但我可以使用 IDataContractSurrogate 添加它,如 here 所示。

有没有办法为序列化程序提供我的 IDataContractSurrogate?

【问题讨论】:

  • 在查看了 KvsActorStateProvider 之后,如果不创建我自己的 ActorStateProvider 似乎是不可能的。这是因为构造函数设置了 actorStateSerializer = new ActorStateProviderSerializer() 并且无法更改 ActorStateProviderSerializer 或提供自定义实现。

标签: c# azure azure-service-fabric


【解决方案1】:

如果你定义类似这样的不可变类型,它可以正常工作:

[DataContract]
public class Payload
{
    [DataMember]
    public readonly string Content;

    public Payload(string content)
    {
        Content = content;
    }
}

也见this article

【讨论】:

  • 我做不到。我应该更清楚,当我说不可变类型时,我指的是 System.Collections.Immutable 类型。
  • 查看那篇文章.. 他们使用不可变集合
  • 好的,我看到他们有一个由 ImmutableList 支持的 IEnumerable 成员,但这与直接序列化 ImmutableList 不同。他们必须在 OnDeserialized 中重建列表。我真正想要的是能够将不可变集合存储在可靠的演员存储中。例如StateManager.SetStateAsync("list", myImmutableList);
猜你喜欢
  • 2016-07-26
  • 2016-07-26
  • 2017-12-17
  • 2015-06-10
  • 2016-04-18
  • 1970-01-01
  • 1970-01-01
  • 2016-04-07
  • 2016-09-25
相关资源
最近更新 更多