public static Message CreateMessage(
            string messageType,
            IEnumerable <MessageHash> predecessors,
            Guid objectId,
            object body)
        {
            // Convert the anonymous typed object to an ExpandoObject.
            var expandoBody = JsonConvert.DeserializeObject <ExpandoObject>(
                JsonConvert.SerializeObject(body));
            object document = new
            {
                MessageType  = messageType,
                Predecessors = predecessors
                               .Select(p => p.ToString())
                               .ToArray(),
                ObjectId = objectId,
                Body     = expandoBody
            };
            var messageHash = new MessageHash(ComputeHash(document));

            return(new Message(
                       messageType,
                       predecessors.ToImmutableList(),
                       objectId,
                       expandoBody,
                       messageHash));
        }
 public static Message FromMemento(MessageMemento memento)
 {
     return(new Message(
                memento.MessageType,
                memento.Predecessors
                .Select(h => MessageHash.Parse(h))
                .ToImmutableList(),
                memento.ObjectId,
                memento.Body,
                MessageHash.Parse(memento.Hash)));
 }
 private Message(
     string type,
     ImmutableList <MessageHash> predecessors,
     Guid objectId,
     ExpandoObject body,
     MessageHash hash)
 {
     _type         = type;
     _predecessors = predecessors;
     _objectId     = objectId;
     _body         = body;
     _hash         = hash;
 }
Exemple #4
0
 public Candidate(MessageHash messageHash, T value)
 {
     _messageHash = messageHash;
     _value       = value;
 }