2016-09-29 54 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); –

相關問題