Hallo, ich versuche gerade Objekte über TCP zu senden, dazu hab ich mir eine Klasse BinaryPackage geschrieben, diese enthält einen ByteArray PackageData und einen Identifer vom Typ Int. Ein BinaryPackage ist generisch, das heißt das ganze kann so aussehen:
BinaryPackage besitzt außerdem die Methoden Serialize und Deserialize, mit Serialize wird ein Objekt vom Typ Int Serialisiert und in die PackageData gepackt, auch der Identifer wird gesetzt. Als nächstes Serialisier ich das BinaryPackage selber, das funktioniert auch alles, auch die Deserialisierung klappt wunderbar:
Allerdings funktioniert das nur, wenn ich den Type von dem Paket habe (Im Beispiel Vector2) wenn ich den nicht weiß, ist es nur ein nutzloser Stream. Nun zu meiner Frage, woher weiß das andere ende, welcher PaketTyp (BinaryPackage<Type>) vorliegt?
BinaryPackage besitzt außerdem die Methoden Serialize und Deserialize, mit Serialize wird ein Objekt vom Typ Int Serialisiert und in die PackageData gepackt, auch der Identifer wird gesetzt. Als nächstes Serialisier ich das BinaryPackage selber, das funktioniert auch alles, auch die Deserialisierung klappt wunderbar:
C#-Quellcode
- var binPackage = new BinaryPackage<Vector2>();
- Console.WriteLine("Binary Package created.");
- binPackage.Serialize(new Vector2(20, 20));
- Console.WriteLine("Serialized Vector into Binary Package.");
- Console.WriteLine("Header: " + binPackage.Identifer);
- Console.WriteLine("Length: " + binPackage.PackageData.Length);
- var stream = PackageSerializer<Vector2>.Serialize(binPackage);
- Console.WriteLine("Serialized Package into Stream.");
- var package = PackageSerializer<Vector2>.Deserialize(stream);
- Console.WriteLine("Deserialized the Package from Stream.");
- var value = package.Deserialize();
- Console.WriteLine("Deserialized PackageData.");
- Console.WriteLine("Result: " + value.GetType().Name);
- Console.WriteLine("Vector<" + value.X + ", " + value.Y + ">");
Allerdings funktioniert das nur, wenn ich den Type von dem Paket habe (Im Beispiel Vector2) wenn ich den nicht weiß, ist es nur ein nutzloser Stream. Nun zu meiner Frage, woher weiß das andere ende, welcher PaketTyp (BinaryPackage<Type>) vorliegt?