private static void MapMessageTypeToSagaType(Type messageType, Type sagaType) { List <Type> sagas; MessageTypeToSagaTypesLookup.TryGetValue(messageType, out sagas); if (sagas == null) { sagas = new List <Type>(1); MessageTypeToSagaTypesLookup[messageType] = sagas; } if (!sagas.Contains(sagaType)) { sagas.Add(sagaType); } IDictionary <Type, MethodInfo> methods; SagaTypeToHandleMethodLookup.TryGetValue(sagaType, out methods); if (methods == null) { methods = new Dictionary <Type, MethodInfo>(); SagaTypeToHandleMethodLookup[sagaType] = methods; } Type directType = typeof(IMessageHandler <>).MakeGenericType(messageType); if (directType.IsAssignableFrom(sagaType)) { methods[messageType] = directType.GetMethod("Handle", new[] { messageType }); } }
private static void MapMessageTypeToSagaType(Type messageType, Type sagaType) { List<Type> sagas; MessageTypeToSagaTypesLookup.TryGetValue(messageType, out sagas); if (sagas == null) { sagas = new List<Type>(1); MessageTypeToSagaTypesLookup[messageType] = sagas; } if (!sagas.Contains(sagaType)) sagas.Add(sagaType); }