2

我对奥尔良有点陌生,目前使用它来处理传入事件,使用奥尔良流传递给谷物。Orleans 客户端发送到类型为“EventData”的流对象,这些对象在我们使用的单独 nuget 中实现。在 Orleans silo 方面,我们有一个使用 ImplicitStreamSubscription 订阅该流的grain。grain 接口不使用“EventData”,实际上流订阅是该grain 的主要入口点。

我遇到的问题是,当客户端尝试将“EventData”实例发送到流时,我得到一个关于“EventData”类缺少序列化程序的异常。将“EventData”类标记为 [Serializable] 解决了这个问题,但理解不使用 Orleans 的内置专用序列化程序。

如何让 Orleans 为“EventData”使用内置生成的序列化程序?

根据文档,似乎必须将奥尔良模板 nuget 添加到“EventData”装配项目中。真的吗?由于它是在 Orleans 以外的运行时环境中使用的 nuget,因此我想保留它而不引用 orleans。

4

1 回答 1

0

在这里得到了回答:https ://github.com/dotnet/orleans/issues/1654

需要在grain接口代码中添加以下属性:

[程序集:KnownType(typeof(EventData))] [程序集:KnownAssembly(typeof(EventData))]

于 2016-06-02T06:06:58.130 回答