示例#1
0
        public static void RegisterViewModels(
            this IEnumerable <TypeScanResult> enumerable,
            IRegisterCallbacks callbacks)
        {
            Guard.NotNull(callbacks, nameof(callbacks));
            Guard.NotNull(enumerable, nameof(enumerable));

            foreach (var typeScanResult in enumerable)
            {
                if (typeScanResult.Type.Name.Contains(ViewModelConvention))
                {
                    callbacks.SingletonRegisterCallback(typeScanResult.Type, typeScanResult.Type);
                }
            }
        }
示例#2
0
 public static IEnumerable <TypeScanResult> RegisterDocuments(
     this IEnumerable <TypeScanResult> enumerable,
     IRegisterCallbacks callbacks)
 {
     foreach (var typeScanResult in enumerable)
     {
         if (typeof(IDocument).IsAssignableFrom(typeScanResult.Type))
         {
             callbacks.CallScopeRegisterCallback(typeScanResult.Type, typeScanResult.Type);
         }
         else
         {
             yield return(typeScanResult);
         }
     }
 }
示例#3
0
 public GatewayAppInitializer(IRegisterCallbacks registerCallbacks)
 {
     Guard.NotNull(registerCallbacks, nameof(registerCallbacks));
     this.registerCallbacks = registerCallbacks;
 }
示例#4
0
 public static IEnumerable <TypeScanResult> RegisterDialogs(
     this IEnumerable <TypeScanResult> enumerable,
     IRegisterCallbacks callbacks)
 {
     return(enumerable.RegisterComponents(typeof(IHaveDialogResult <>), callbacks.CallScopeRegisterCallback));
 }
示例#5
0
 public static IEnumerable <TypeScanResult> RegisterStatusBar(
     this IEnumerable <TypeScanResult> enumerable,
     IRegisterCallbacks callbacks)
 {
     return(enumerable.RegisterComponents <IStatusBarViewModel>(callbacks.SingletonRegisterCallback));
 }
示例#6
0
 public static IEnumerable <TypeScanResult> RegisterMenu(
     this IEnumerable <TypeScanResult> enumerable,
     IRegisterCallbacks callbacks)
 {
     return(enumerable.RegisterComponents <IMenuComponent>(callbacks.SingletonRegisterCallback));
 }
示例#7
0
        public static void SubscribeMessage(this ConsumerScanResult consumerScanResult, IRegisterCallbacks registerCallbacks)
        {
            var contract = consumerScanResult.GetConsumerContract();

            registerCallbacks.SingletonRegisterCallback(typeof(IConsumerDefinition), contract.ConsumerDefinition);
            registerCallbacks.CallScopeRegisterCallback(contract.ConsumerInterface, contract.Consumer);
            registerCallbacks.CallScopeRegisterCallback(contract.MessageHandlerInterface, contract.Adapter, Guid.NewGuid().ToString());
        }
示例#8
0
 public static void SubscribeMessages(this IEnumerable <ConsumerScanResult> enumerable, IRegisterCallbacks registerCallbacks)
 {
     Guard.NotNull(registerCallbacks, nameof(registerCallbacks));
     Guard.NotNull(enumerable, nameof(enumerable));
     foreach (var handlerScanResult in enumerable)
     {
         handlerScanResult.SubscribeMessage(registerCallbacks);
     }
 }
 public ViewModelAppInitializer(IRegisterCallbacks registerCallbacks)
 {
     Guard.NotNull(registerCallbacks, nameof(registerCallbacks));
     this.registerCallbacks = registerCallbacks;
 }
        public static void RedirectMessages(this IEnumerable <MessageScanResult> enumerable, IRegisterCallbacks registerCallbacks)
        {
            Guard.NotNull(registerCallbacks, nameof(registerCallbacks));
            Guard.NotNull(enumerable, nameof(enumerable));
            var adapterMap
                = new Dictionary <Type, AdapterFactory>
                {
                { typeof(ICommand), (mt, mit) => typeof(RedirectCommandConsumer <>).MakeGenericType(mt) },
                { typeof(IEvent), (mt, mit) => typeof(RedirectEventConsumer <>).MakeGenericType(mt) },
                { typeof(ITransaction <>), (mt, mit) => typeof(RedirectRequestConsumer <,>).MakeGenericType(mt, mit.GetGenericArguments()[0]) },
                { typeof(IRequest <>), (mt, mit) => typeof(RedirectRequestConsumer <,>).MakeGenericType(mt, mit.GetGenericArguments()[0]) }
                };

            foreach (var messageScanResult in enumerable)
            {
                var messageType       = messageScanResult.Type;
                var messageInterfaces = messageType.GetInterfaces();

                foreach (var messageInterface in messageInterfaces)
                {
                    var interfaceDefinition = messageInterface.GetTypeDefinition();
                    if (adapterMap.ContainsKey(interfaceDefinition))
                    {
                        var consumer          = adapterMap[interfaceDefinition](messageType, messageInterface);
                        var handlerScanResult = new RedirectConsumerScanResult(consumer);
                        handlerScanResult.SubscribeMessage(registerCallbacks);
                        break;
                    }
                }
            }
        }