使用Azure服务结构我试图序列化有状态服务和参与者中的不可变类型。显然,在数据合约序列化程序中没有支持,但我可以使用IDataContractSurrogate将其添加为here。IDataContractSurrogate可以与Azure可靠服务和/或参与者一起使用吗?
是否有某种方法可以为我的IDataContractSurrogate提供序列化程序?
使用Azure服务结构我试图序列化有状态服务和参与者中的不可变类型。显然,在数据合约序列化程序中没有支持,但我可以使用IDataContractSurrogate将其添加为here。IDataContractSurrogate可以与Azure可靠服务和/或参与者一起使用吗?
是否有某种方法可以为我的IDataContractSurrogate提供序列化程序?
如果你定义与此类似一成不变的类型,它工作正常:
[DataContract]
public class Payload
{
[DataMember]
public readonly string Content;
public Payload(string content)
{
Content = content;
}
}
看到this article了。
我不能那样做。我应该更清楚,当我说不可变类型时,我指的是System.Collections.Immutable类型。 –
检查该文章..他们使用一个不可变的集合 – LoekD
好吧,我看到他们有一个IEnumerable成员支持ImmutableList,但这不同于直接序列化ImmutableList。他们必须在OnDeserialized中重建列表。我真正想要的是将不可变集合存储在可靠的演员存储中的能力。例如StateManager.SetStateAsync(“list”,myImmutableList); –
查看KvsActorStateProvider之后,如果不创建我自己的ActorStateProvider,看起来是不可能的。这是因为构造函数设置了actorStateSerializer = new ActorStateProviderSerializer(),并且没有办法更改ActorStateProviderSerializer或提供自定义实现。 –
这有点类似:http://stackoverflow.com/questions/35578005/hosting-console-application-in-public-service-fabric-cluster –