コード例 #1
0
 public ExcelService(IServicesProvider <ICategoryRepo> categoryRepo,
                     IHttpContextAccessor accessor, IHostingEnvironment hostingEnvironment)
 {
     _accessor           = accessor;
     _categoryRepo       = categoryRepo;
     _hostingEnvironment = hostingEnvironment;
 }
コード例 #2
0
        public static int?GetTotalCount <T>(this IServicesProvider dataService, IQueryable <T> entities,
                                            FilterInfo filter, DbSetInfo dbSetInfo)
            where T : class
        {
            IQueryable filtered_entities = PerformFilter(dataService, entities, filter, dbSetInfo);

            return(filtered_entities.Count());
        }
コード例 #3
0
        public NavigationImpl(IServicesProvider servicesProvider, IDispatcher dispatcher)
        {
            Services = new ScopeBuilder(servicesProvider)
                       .WithInstance(this).As <INavigation>()
                       .Build();

            objectFactory   = Services.GetService <IObjectFactory>();
            this.dispatcher = dispatcher;
        }
コード例 #4
0
        public static T GetRefreshedEntity <T>(this IServicesProvider dataService, IQueryable <T> entities,
                                               RefreshInfo info)
            where T : class
        {
            var keyValue = info.rowInfo.GetPKValues(dataService.ServiceContainer.DataHelper);
            var dbEntity = FindEntity(entities, info.rowInfo, keyValue);

            return((T)dbEntity);
        }
コード例 #5
0
ファイル: Loader.cs プロジェクト: llenroc/oneget
 private static void ProcessServicesProvider(IServicesProvider provider, YieldServicesProvider yieldServicesProvider, FourPartVersion asmVersion, IRequest request)
 {
     try {
         provider.InitializeProvider(DynamicInterface.Instance, request);
         FourPartVersion ver = provider.GetProviderVersion();
         yieldServicesProvider(provider.GetServicesProviderName(), provider, ver == 0 ? asmVersion : ver, request);
     } catch (Exception e) {
         e.Dump();
     }
 }
コード例 #6
0
 public UserService(IServicesProvider <IUserRepo> userRepo,
                    IServicesProvider <IAppPermissionRepo> permissionRepo,
                    IServicesProvider <IAppNotificationRepo> notificationRepo,
                    IHttpContextAccessor accessor,
                    IHubContext <NotificationHub> hubContext)
 {
     _accessor         = accessor;
     _userRepo         = userRepo;
     _notificationRepo = notificationRepo;
     _hubContext       = hubContext;
     _permissionRepo   = permissionRepo;
 }
コード例 #7
0
 public CategoryService(IServicesProvider <ICategoryRepo> categoryRepo,
                        IServicesProvider <IProductCategoryRepo> productCategoryRepo,
                        IServicesProvider <IAppNotificationRepo> notificationRepo,
                        IHttpContextAccessor accessor,
                        IHubContext <NotificationHub> hubContext)
 {
     _accessor            = accessor;
     _categoryRepo        = categoryRepo;
     _productCategoryRepo = productCategoryRepo;
     _notificationRepo    = notificationRepo;
     _hubContext          = hubContext;
 }
コード例 #8
0
        /// <summary>
        /// コンストラクタ
        /// </summary>
        /// <param name="servicesProvider">インジェクション サービス</param>
        protected ApplicationViewModelBase(IServicesProvider servicesProvider)
        {
            //
            // デザイナー上でViewModelをバインドするために
            // デザインモード時は常にViewModel をインスタンス化できるようにする。
            //
            if (ViewUtility.IsDesignMode()) return;
            if (servicesProvider == null) throw new ArgumentNullException(nameof(servicesProvider));

            _servicesProvider = servicesProvider;
            DialogService     = _servicesProvider.DialogService;
            ViewService       = _servicesProvider.ViewService;
        }
コード例 #9
0
        /// <summary>
        /// 创建服务生成器
        /// </summary>
        /// <param name="service">服务提供者</param>
        /// <param name="config">配置回调</param>
        /// <returns>服务生成器</returns>
        public static IServicesBuilder CreateServiceBuilder(this IServicesProvider service, Action <IServicesBuilder> config)
        {
            if (config == null)
            {
                throw new ArgumentNullException("配置回调不能为null");
            }

            var builder = new HttpServicesBuilder();

            builder.ServiceProvider = service;
            config(builder);

            return(builder);
        }
コード例 #10
0
        public ScopeBuilder(IServicesProvider parentServicesProvider = null)
        {
            servicesProvider.ObjectFactory = objectFactory;
            servicesProvider.TypeMapping   = abstractTypeMapping;
            objectFactory.ServicesProvider = servicesProvider;
            objectFactory.TypeMapping      = abstractTypeMapping;

            WithType <ScopeBuilder>().As <IScopeBuilder>();

            if (parentServicesProvider != null)
            {
                servicesProvider.Parent    = parentServicesProvider;
                abstractTypeMapping.Parent = parentServicesProvider.GetService <IAbstractTypeMapping>();
            }
        }
コード例 #11
0
        public static IQueryable <T> PerformQuery <T>(this IServicesProvider dataService, IQueryable <T> entities,
                                                      ref int?totalCount)
            where T : class
        {
            var reqCtxt   = RequestContext.Current;
            var queryInfo = reqCtxt.CurrentQueryInfo;

            if (queryInfo.isIncludeTotalCount && !totalCount.HasValue)
            {
                totalCount = GetTotalCount(dataService, entities, queryInfo.filterInfo, queryInfo.dbSetInfo);
            }
            entities = PerformFilter(dataService, entities, queryInfo.filterInfo, queryInfo.dbSetInfo);
            entities = PerformSort(dataService, entities, queryInfo.sortInfo);
            entities = GetPage(dataService, entities, queryInfo.pageIndex, queryInfo.pageSize, queryInfo.pageCount,
                               queryInfo.dbSetInfo);
            return(entities);
        }
コード例 #12
0
        /// <summary>
        /// ViewModel の生成ルールを設定します。<para/>
        /// このメソッドは最初のView を生成する前に実行してください。
        /// </summary>
        /// <param name="servicesProvider">インジェクション サービス</param>
        public static void SetDefaultViewModelLocater(IServicesProvider servicesProvider)
        {
            //
            // ViewModel を生成する場合、コンストラクタの引数にインジェクション サービスを設定する。
            //
            ViewModelLocationProvider.SetDefaultViewModelFactory(
                viewModelType => Activator.CreateInstance(viewModelType, servicesProvider));

            //
            // View に設定したViewModel 属性の型によってView とViewModel を紐付けます。
            //
            ViewModelLocationProvider.SetDefaultViewTypeToViewModelTypeResolver(
                viewType =>
            {
                var vmType = viewType.GetTypeInfo().GetCustomAttribute <ViewModelAttribute>();
                return(vmType?.ViewModelType);
            });
        }
コード例 #13
0
        public void GetServicesTest()
        {
            Assert.IsNull(ServicesContainer.ServicesProvider);

            var servicesProviderMock = new Mock <IServicesProvider>();

            servicesProviderMock.Setup(provider => provider.GetEnvironmentService())
            .Returns(new EnvironmentServiceMock());
            servicesProviderMock.Setup(provider => provider.GetLoggingService(It.IsAny <string>(), null))
            .Returns(new LoggingServiceMock());

            IServicesProvider servicesProvider = servicesProviderMock.Object;

            ServicesContainer.SetServicesProvider(servicesProvider);
            Assert.IsNotNull(ServicesContainer.ServicesProvider);

            Assert.IsNotNull(servicesProvider.GetLoggingService("any"));
            Assert.IsNotNull(servicesProvider.GetEnvironmentService());
        }
コード例 #14
0
        /// <summary>
        /// コンストラクタ
        /// </summary>
        /// <param name="servicesProvider">インジェクション サービス</param>
        protected ApplicationViewModelBase(IServicesProvider servicesProvider)
        {
            //
            // デザイナー上でViewModelをバインドするために
            // デザインモード時は常にViewModel をインスタンス化できるようにする。
            //
            if (ViewUtility.IsDesignMode())
            {
                return;
            }
            if (servicesProvider == null)
            {
                throw new ArgumentNullException(nameof(servicesProvider));
            }

            _servicesProvider = servicesProvider;
            DialogService     = _servicesProvider.DialogService;
            ViewService       = _servicesProvider.ViewService;
        }
コード例 #15
0
        public static IQueryable <T> GetPage <T>(this IServicesProvider dataService, IQueryable <T> entities, int pageIndex,
                                                 int pageSize, int pageCount, DbSetInfo dbInfo)
            where T : class
        {
            var result = entities;

            if (!dbInfo.enablePaging || pageIndex < 0)
            {
                return(result);
            }
            if (pageSize < 0)
            {
                pageSize = 0;
            }
            var skipRows = pageIndex * pageSize;

            result = Queryable.Take(Queryable.Skip(entities, skipRows), pageSize * pageCount);
            return(result);
        }
コード例 #16
0
        IServicesProvider ICoreApplication.Initialize(IServicesProvider servicesProvider)
        {
            var assembly           = GetType().Assembly;
            var builder            = new ScopeBuilder(servicesProvider);
            var elementTypeMapping = new ElementTypeMapping(assembly);
            var appValues          = new AppValues();
            var conversionService  = new ConversionService(assembly);
            var bindingService     = new BindingService(appValues, conversionService);

            LoadApplicationDefinition(appValues, bindingService, elementTypeMapping, servicesProvider.GetService <IObjectFactory>());

            builder
            .WithInstance(this).As <Application>().As(GetType())
            .WithInstance(elementTypeMapping).As <IElementTypeMapping>()
            .WithInstance(appValues).As <IAppValues>()
            .WithInstance(bindingService).As <IBindingService>()
            .WithType <TooltipService>().As <ITooltipService>().AsSingleton()
            .WithType <UIServices>().As <IUIServices>().AsSingleton()
            .WithType <XxFileParserImpl>().As <IXxFileParser>().AsSingleton();

            BeforeInitServices?.Invoke(servicesProvider, builder);
            InitServices(servicesProvider, builder);

            if (!builder.TryResolveInstance <IViewLocator>(out var _))
            {
                builder.WithType <DefaultViewLocator>().As <IViewLocator>().AsSingleton();
            }

            AfterInitServices?.Invoke(servicesProvider, builder);


            Services = builder.Build();

            LoadFonts(Services.GetService <IFontManager>());
            WindowsService = Services.GetService <IWindowsService>();
            ((WindowService)WindowsService).ObjectFactory = Services.GetService <IObjectFactory>();
            return(Services);
        }
コード例 #17
0
        private bool AddServicesProvider(string name, IServicesProvider provider, ulong version, IRequest request)
        {
            if (_servicesProviders.ContainsKey(name))
            {
                if (version > _servicesProviders[name].Version)
                {
                    // remove the old provider first.
                    // todo: this won't remove the plugin domain and unload the code yet
                    // we'll have to do that later.

                    _servicesProviders.Remove(name);
                }
                else
                {
                    return(false);
                }
            }
            _servicesProviders.AddOrSet(name, new ServicesProvider(provider)
            {
                Version = version
            }).Initialize(request);
            return(true);
        }
コード例 #18
0
        public static IQueryable <T> PerformSort <T>(this IServicesProvider dataService, IQueryable <T> entities,
                                                     SortInfo sort)
            where T : class
        {
            var result = entities;

            if (sort == null || sort.sortItems == null || sort.sortItems.Count == 0)
            {
                return(result);
            }

            if (sort == null || sort.sortItems == null || sort.sortItems.Count == 0)
            {
                return(result);
            }
            var first = true;
            var sb    = new StringBuilder();

            foreach (var si in sort.sortItems)
            {
                var fldName = si.fieldName;
                if (!first)
                {
                    sb.Append(",");
                }
                sb.Append(fldName);
                if (si.sortOrder == SortOrder.DESC)
                {
                    sb.Append(" DESC");
                }
                first = false;
            }

            result = result.OrderBy(sb.ToString());
            return(result);
        }
コード例 #19
0
ファイル: MainViewModel.cs プロジェクト: Iyemon-018/Dev
        /// <summary>
        /// コンストラクタ
        /// </summary>
        /// <param name="servicesProvider">インジェクション サービス</param>
        public MainViewModel(IServicesProvider servicesProvider) : base(servicesProvider)
        {
            //
            // 各コマンドの初期化を行う。
            //

            //
            // 終了コマンド
            // コンテキストメニューからメッセージボックスを表示すると即時クローズされてしまうので
            // メッセージ無しで終了する。
            //
            ExitCommand = new DelegateCommand(() =>
                                              {
                                                  var shutDown = DialogService.ShowQuestion(Resources.ExitConfirmMessage);
                                                  if (shutDown)
                                                  {
                                                      ApplicationManager.Shutdown();
                                                  }
                                              });

            ConfigurationCommand = new DelegateCommand(() =>
                                                       {
                                                           // TODO 構成情報画面を表示する。
                                                       });


            ReceivedNotificationListCommand = new DelegateCommand(() =>
                                                                  {
                                                                      // TODO 通知受信履歴一覧を表示する。
                                                                  });

            ShowBalloonCommand = new DelegateCommand(() =>
                                                     {
                                                         BalloonTipService.NotifyInformation("Test", "テスト的にバルーン出した。");
                                                     });
        }
コード例 #20
0
        /// <summary>
        /// コンストラクタ
        /// </summary>
        /// <param name="servicesProvider">インジェクション サービス</param>
        public MainViewModel(IServicesProvider servicesProvider) : base(servicesProvider)
        {
            //
            // 各コマンドの初期化を行う。
            //

            //
            // 終了コマンド
            // コンテキストメニューからメッセージボックスを表示すると即時クローズされてしまうので
            // メッセージ無しで終了する。
            //
            ExitCommand = new DelegateCommand(() =>
            {
                var shutDown = DialogService.ShowQuestion(Resources.ExitConfirmMessage);
                if (shutDown)
                {
                    ApplicationManager.Shutdown();
                }
            });

            ConfigurationCommand = new DelegateCommand(() =>
            {
                // TODO 構成情報画面を表示する。
            });


            ReceivedNotificationListCommand = new DelegateCommand(() =>
            {
                // TODO 通知受信履歴一覧を表示する。
            });

            ShowBalloonCommand = new DelegateCommand(() =>
            {
                BalloonTipService.NotifyInformation("Test", "テスト的にバルーン出した。");
            });
        }
コード例 #21
0
ファイル: ApplicationManager.cs プロジェクト: Iyemon-018/Dev
        /// <summary>
        /// ViewModel の生成ルールを設定します。<para/>
        /// このメソッドは最初のView を生成する前に実行してください。
        /// </summary>
        /// <param name="servicesProvider">インジェクション サービス</param>
        public static void SetDefaultViewModelLocater(IServicesProvider servicesProvider)
        {
            //
            // ViewModel を生成する場合、コンストラクタの引数にインジェクション サービスを設定する。
            //
            ViewModelLocationProvider.SetDefaultViewModelFactory(
                viewModelType => Activator.CreateInstance(viewModelType, servicesProvider));

            //
            // View に設定したViewModel 属性の型によってView とViewModel を紐付けます。
            //
            ViewModelLocationProvider.SetDefaultViewTypeToViewModelTypeResolver(
                viewType =>
                {
                    var vmType = viewType.GetTypeInfo().GetCustomAttribute<ViewModelAttribute>();
                    return vmType?.ViewModelType;
                });
        }
コード例 #22
0
        public void Run(ICoreApplication application, IServicesProvider servicesProvider = null)
        {
            FormsApplication.SetHighDpiMode(HighDpiMode.SystemAware);
            FormsApplication.SetCompatibleTextRenderingDefault(false);

            Sequence.CreateSequenceFunc = SequenceImpl.Create;
            Sequence.NextFrameSequence  = SequenceImpl.Create(0, 0, null, null);

            dispatcher.DispatcherThread = Thread.CurrentThread;

            using (var graphics = System.Drawing.Graphics.FromHwnd(IntPtr.Zero))
            {
                UiUnit.PixelsPerUnit = graphics.DpiX / 96f;
            }

            var scopeBuilder = new ScopeBuilder(servicesProvider);

            scopeBuilder.WithSkia()
            .WithInstance(gamePads).As <IGamePads>()
            .WithInstance(keyboard).As <IKeyboard>()
            .WithType <UiInput>().As <IUiInput>().AsSingleton()
            .WithCrossTypes()
            .WithInstance(dispatcher).As <ISystemDispatcher>().As <IDispatcher>()
            .WithInstance(sequencer).As <ISequencer>()
            .WithType <SelectFileServiceWinForms>().As <ISelectFileService>().AsSingleton();


            var services = scopeBuilder.Build();

            application.AfterInitServices += (s, b) =>
            {
                b.WithType <WindowServiceWinForms>().AsSelf().As <IWindowsService>().AsSingleton()
                .WithType <AppColorTable>().AsSelf().AsSingleton();
            };

            services = application.Initialize(services);
            application.Load();

            var windowsService = services.GetService <WindowServiceWinForms>();

            var stopwatch = new Stopwatch();

            stopwatch.Start();

            TimeSpan lastUpdateTimeSpan = stopwatch.Elapsed;

            while (windowsService.MainWindow != null)
            {
                TimeSpan currentTimeSpan = stopwatch.Elapsed;
                TimeSpan timeDelta       = currentTimeSpan - lastUpdateTimeSpan;
                lastUpdateTimeSpan = currentTimeSpan;

                gamePads.Update();
                keyboard.Update();
                dispatcher.Process();
                sequencer.Update(timeDelta);

                for (var idx = 0; idx < windowsService.Windows.Count; ++idx)
                {
                    var hostWindow = windowsService.Windows[idx];

                    hostWindow.Window.Update((float)timeDelta.TotalSeconds);
                    if (hostWindow.Window.IsDirty)
                    {
                        hostWindow.Redraw();
                    }
                }

                FormsApplication.DoEvents();
                Thread.Sleep(1);
            }

            foreach (var wnd in windowsService.Windows)
            {
                wnd.Window.Close();
            }
        }
コード例 #23
0
 public UserController(IServicesProvider <IUserService> userProvider)
 {
     _userProvider = userProvider;
 }
コード例 #24
0
 /// <summary>
 /// 构造方法
 /// </summary>
 /// <param name="servicesProvider">服务提供者</param>
 /// <param name="unityServicesOptions">统一服务配置</param>
 public UnityServicesBuilder(IServicesProvider servicesProvider, IUnityServicesOptions unityServicesOptions)
 {
     this.servicesProvider     = servicesProvider;
     this.unityServicesOptions = unityServicesOptions;
 }
コード例 #25
0
        public static object Create(Type type, IServicesProvider serviceProvider, params object[] parameters)
        {
            IEnumerable <ConstructorInfo> constructors = null;

            try
            {
                constructors = type.GetTypeInfo().DeclaredConstructors;

                foreach (var constructor in constructors)
                {
                    var constructorParameters = constructor.GetParameters();

                    var arguments = new object[constructorParameters.Length];

                    var hasAllParams = true;

                    for (var idx = 0; idx < constructorParameters.Length; ++idx)
                    {
                        var param = constructorParameters[idx];

                        bool shouldResolveService = true;

                        foreach (var par in parameters)
                        {
                            if (par == null || param == null)
                            {
                                continue;
                            }
                            if (param.ParameterType.IsAssignableFrom(par.GetType()))
                            {
                                arguments[idx]       = par;
                                shouldResolveService = false;
                                break;
                            }
                        }

                        if (shouldResolveService)
                        {
                            object instance = null;
                            serviceProvider?.TryResolveInstance(param.ParameterType, out instance);

                            arguments[idx] = instance;

                            if (arguments[idx] == null && !param.IsOptional)
                            {
                                hasAllParams = false;
                                break;
                            }
                        }
                    }

                    if (hasAllParams)
                    {
                        return(constructor.Invoke(arguments));
                    }
                }
            }
            catch (Exception ex)
            {
                Console.WriteLine(ex);
                throw;
            }

            var parametersList = string.Join(", ", parameters.Select(o => o.GetType().Name));

            var constructorsInfo = "";

            foreach (var constructor in constructors)
            {
                constructorsInfo += "\n";
                constructorsInfo += $"{type.Name}(";
                constructorsInfo += string.Join(", ", constructor.GetParameters().Select(o => o.ParameterType.Name)) + ")";
            }

            throw new Exception($"Cannot find proper constructor for {type.FullName} and given parameters.\n{parametersList}\nConstructors:{constructorsInfo}");
        }
コード例 #26
0
 public CategoryController(IServicesProvider <ICategoryService> _service)
 {
     service = _service.GetInstance();
 }
コード例 #27
0
 public ExcelController(IServicesProvider <IExcelService> importExcelProvider)
 {
     _importExcelProvider = importExcelProvider;
 }
コード例 #28
0
 public CategoryController(IServicesProvider <ICategoryService> categoryProvider)
 {
     _categoryProvider = categoryProvider.GetInstance();
 }
コード例 #29
0
 public GeneralController(IServicesProvider <IGeneralService> generalProvider)
 {
     _generalProvider = generalProvider;
 }
コード例 #30
0
 public AppNotificationService(IServicesProvider <IAppNotificationRepo> notificationRepo,
                               IHttpContextAccessor accessor)
 {
     _notificationRepo = notificationRepo;
     _accessor         = accessor;
 }
コード例 #31
0
 public GeneralService(IServicesProvider <IGeneralRepo> generalRepo,
                       IHttpContextAccessor accessor)
 {
     _accessor    = accessor;
     _generalRepo = generalRepo;
 }
コード例 #32
0
 public static void SetServicesProvider(IServicesProvider servicesProvider)
 {
     ServicesProvider = servicesProvider;
 }
コード例 #33
0
 protected virtual void InitServices(IServicesProvider systemServices, IScopeBuilder scopeBuilder)
 {
 }