2016-04-06 5 views
1

Ich bin etwas neu in Orleans und verwendet es derzeit zur Verarbeitung von eingehenden Ereignissen übergeht an Körner mit Orleans Streams. Der Orleans-Client sendet Stream-Objekte vom Typ 'EventData', die in einem separaten Nuget implementiert sind, das wir konsumieren. Auf der Orleans Siloseite haben wir eine Körnung mit Subskriptionen zu diesem Stream mit ImplicitStreamSubscription. Die Kornschnittstelle verwendet nicht die 'EventData', und tatsächlich ist die Stream-Subskription der Haupteintrittspunkt für dieses Korn.Serializer für Orleans Streams Payload-Klassen

Das Problem, auf das ich stoße, wenn der Client versucht, die EventData-Instanzen an den Stream zu senden, bekomme ich eine Ausnahme für fehlende Serializer für die 'EventData' Klasse zurück. Das Markieren der "EventData" -Klasse als [Serializable] löste dies, versteht aber nicht den eingebauten spezialisierten Serializer von Orleans.

Wie kann ich Orleans dazu bringen, die eingebauten generierten Serializer für die 'EventData' zu verwenden?

Entsprechend der documentation scheint es ein Muss zu sein, die orleans templates nuget dem 'EventData' Assembly-Projekt hinzuzufügen. Ist es wirklich? Da es ein nugget ist, das in einer anderen Laufzeitumgebung als Orleans verwendet wird, möchte ich es ohne irgendeinen Verweis auf Orleans behalten.

Antwort

0

Das hier beantwortet wurde: https://github.com/dotnet/orleans/issues/1654

Benötigen Sie die folgenden Attribute auf die Korn Interface-Code hinzuzufügen:

[assembly: Knowntype (typeof (Eventdata))] [assembly: KnownAssembly (typeof (Eventdata)]]