private void AddMessageTypePathMapping(MessageTypeMessagingEntityMappingDetails messageTypePathMappingDetails) { MessageTypeMessagingEntityMappingDetails existingMessageTypePathMapping = _messageTypePathMappings.FirstOrDefault(mtpm => mtpm.MessageType == messageTypePathMappingDetails.MessageType && mtpm.MessagingEntityType == messageTypePathMappingDetails.MessagingEntityType); if (existingMessageTypePathMapping != null) { throw new MappingAlreadyExistsForMessageTypeException(existingMessageTypePathMapping.MessageType, existingMessageTypePathMapping.MessagingEntityType); } _messageTypePathMappings.Add(messageTypePathMappingDetails); }
private IMessageSource <TSourceMessage> CreateMessageSource <TSourceMessage>(MessageTypeMessagingEntityMappingDetails messageTypeMessageingEntityMappingDetails) where TSourceMessage : class, TMessage { Type messageType = messageTypeMessageingEntityMappingDetails.MessageType; Type messageSourceType = typeof(MessageSource <>).MakeGenericType(messageType); Type messageSourceDeserializerType = typeof(IMessageDeserializer <>).MakeGenericType(messageType); return(Expression.Lambda <Func <IMessageSource <TSourceMessage> > >( Expression.New(messageSourceType.GetConstructor(BindingFlags.Instance | BindingFlags.Public | BindingFlags.NonPublic, Type.DefaultBinder, new Type[] { typeof(IMessagingEntityFactory), typeof(IEnumerable <>).MakeGenericType(messageSourceDeserializerType), typeof(IMessageBrokeredMessageTable) }, null), Expression.Constant(_messagingEntityFactory), Expression.Call( Expression.Constant(_messageDeserializerFactory), typeof(IMessageDeserializerFactory).GetMethod("Create").MakeGenericMethod(messageType, typeof(TServiceMessage)), Expression.Constant(_assemblyFilter, typeof(Func <Assembly, bool>)), Expression.Constant(_typeFilter, typeof(Func <Type, bool>))), Expression.Constant(MessageBrokeredMessageTable.ConfiguredInstance, typeof(IMessageBrokeredMessageTable)))).Compile().Invoke()); }
public override bool Equals(object obj) { MessageTypeMessagingEntityMappingDetails compareTo = obj as MessageTypeMessagingEntityMappingDetails; return(compareTo != null && (!Object.ReferenceEquals(this, compareTo) || (_receiveMode == compareTo._receiveMode && _creationOptions == compareTo._creationOptions && _path == compareTo._path && _messageType == compareTo._messageType && _messagingEntityType == compareTo._messagingEntityType))); }