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
才能不可变。你是对的。元素对象本身也应该包含只读属性。
我一直在研究 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
才能不可变。你是对的。元素对象本身也应该包含只读属性。