我对Orleans比较陌生,目前正在使用它来处理传入的事件,并使用orleans streams传递给grains。Orleans客户端发送到'EventData‘类型的流对象,这些对象在我们使用的一个单独的nuget中实现。在Orleans竖井方面,我们有一个使用ImplicitStreamSubscription订阅此流的粒度。grain接口不使用'EventData',实际上流订阅是该grain的主要入口点。
我遇到的问题是,当客户端尝试将'EventData‘实例发送到流时,我得到一个关于'EventData’类缺少序列化程序的异常。将'EventData‘类标记为Serializable解决了这个问题,但understand不使用Orleans内置的专用序列化程序。
如何让Orleans使用'EventData‘的内置序列化程序?
根据documentation的说法,似乎必须将orleans templates添加到'EventData‘组装项目中。真的是这样吗?因为它是一个在Orleans以外的运行时环境中使用的nuget,所以我想保留它而不引用orleans。
发布于 2016-06-02 14:06:58
答案在这里:https://github.com/dotnet/orleans/issues/1654
需要在粒度接口代码中添加以下属性:
程序集: KnownType(typeof(EventData))
https://stackoverflow.com/questions/36450370
复制相似问题