示例#1
0
        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 });
            }
        }
示例#2
0
        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);
        }