Note that there are some explanatory texts on larger screens.

plurals
  1. POprotobuf-net Guid deserializing to Guid.Empty when using inheritance
    primarykey
    data
    text
    <p>I'm having issues deserializing a Guid when the Guid is defined in a message base class. When I have the following message.</p> <pre><code> [DataContract] public abstract class GatewayPageEvent:IDomainEvent { protected GatewayPageEvent() { On = DateTime.Now; } [DataMember(Order = 1)] public Guid GatewayPageId { get; set; } [DataMember(Order = 2)] public DateTime On { get; set; } } [DataContract] public class GatewayPageAddedToSite : GatewayPageEvent { [DataMember(Order = 3)]public string Url { get; set; } [DataMember(Order = 4)]public string SiteCode { get; set; } } </code></pre> <p>GatewayPageId is always deserializing as Guid.Empty. Here's a unit test I wrote that fails. I'm kinda stumped...</p> <pre><code> public string Serialize(object t) { var memoryStream = new MemoryStream(); ProtoBuf.Serializer.Serialize(memoryStream, t); return Convert.ToBase64String(memoryStream.ToArray()); } public object Deserialize(string value, Type targetType) { var bytes = Convert.FromBase64String(value); var stream = new MemoryStream(bytes); return ProtoBuf.Serializer.NonGeneric.Deserialize(targetType, stream); } [Test] public void protobuf_serialization_can_deserialized_guids() { var originalMessage = new GatewayPageAddedToSite {GatewayPageId = Guid.NewGuid(), SiteCode = "dls", Url = "test"}; var serializedMessage = Serialize(originalMessage); var @event = (GatewayPageAddedToSite)Deserialize(serializedMessage, typeof(GatewayPageAddedToSite)); Assert.AreEqual(@event.GatewayPageId, originalMessage.GatewayPageId); } </code></pre> <p>I know Guids work fine because the following unit test works just fine.</p> <pre><code>[Test] public void guids_work_fine() { var original = Guid.NewGuid(); var serialized = Serialize(original); var deserialized = (Guid) Deserialize(serialized, typeof (Guid)); Assert.AreEqual(original,deserialized); } </code></pre> <p>Am I defining my contract wrong? Or is this a problem with protobuf-net?</p>
    singulars
    1. This table or related slice is empty.
    plurals
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    1. This table or related slice is empty.
 

Querying!

 
Guidance

SQuiL has stopped working due to an internal error.

If you are curious you may find further information in the browser console, which is accessible through the devtools (F12).

Reload