Akka.net 消息不变性

Akka.net message immutabilty

我一直在研究 Akka.net bootcamp 和 运行,根据我读到的有关消息的内容,我一直感到困惑。

messaging documentation 中声明消息应该是不可变的。

在训练营的第 2 单元中,Initialize Chart 消息在几个层面上似乎是可变的。

public class InitializeChart
{
    public InitializeChart(Dictionary<string, Series> initialSeries)
    {
        InitialSeries = initialSeries;
    }

    public Dictionary<string, Series> InitialSeries { get; private set; }
}

首先,可以修改词典内容(添加、删除等)。其次是字典项,Series, 是可变的。

我有两个问题:

1) 我对如何构建 Akka.net 消息的解释有误吗? (这个例子实际上是正确的。)

2) Akka.net 消息是否应该一直不可变?例如,如果此消息更改为:

public class InitializeChart
{
    public InitializeChart(Dictionary<string, Series> initialSeries)
    {
        InitialSeries = new ReadOnlyDictionary<string, Series>(initialSeries);
    }

    public IReadOnlyDictionary<string, Series> InitialSeries { get; private set; }
}

这会满足 Akka.net 消息的要求,还是系列元素也应该是不可变的?

是的,该消息应该使用 IReadOnlyDictionary 才能不可变。你是对的。元素对象本身也应该包含只读属性。