2016-09-29 25 views
0

使用Azure服务结构我试图序列化有状态服务和参与者中的不可变类型。显然,在数据合约序列化程序中没有支持,但我可以使用IDataContractSurrogate将其添加为hereIDataContractSurrogate可以与Azure可靠服务和/或参与者一起使用吗?

是否有某种方法可以为我的IDataContractSurrogate提供序列化程序?

+0

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

+0

这有点类似:http://stackoverflow.com/questions/35578005/hosting-console-application-in-public-service-fabric-cluster –

回答

0

如果你定义与此类似一成不变的类型,它工作正常:

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

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

看到this article了。

+0

我不能那样做。我应该更清楚,当我说不可变类型时,我指的是System.Collections.Immutable类型。 –

+0

检查该文章..他们使用一个不可变的集合 – LoekD

+0

好吧,我看到他们有一个IEnumerable成员支持ImmutableList,但这不同于直接序列化ImmutableList。他们必须在OnDeserialized中重建列表。我真正想要的是将不可变集合存储在可靠的演员存储中的能力。例如StateManager.SetStateAsync(“list”,myImmutableList); –

相关问题