public void InterfaceBindingResolution()
        {
            var factory = new NinjectKernelFactory();
            var kernel  = factory.CreateKernel(Mock.Of <DTE2>());

            var typesToResolve = new List <Type>
            {
                typeof(ICommand)
            };

            var excludedTypes = new List <Type>
            {
                typeof(IIntValueControl)
            };

            var assembly           = Assembly.GetAssembly(typeof(IDteEventsSubscriber));
            var assemblyInterfaces = assembly
                                     .GetTypes()
                                     .Where(t => t.IsInterface)
                                     .Except(excludedTypes);

            typesToResolve.AddRange(assemblyInterfaces);

            foreach (var interfaceType in typesToResolve)
            {
                var objects = kernel.GetAll(interfaceType);
                Assert.IsNotEmpty(objects, $"Unable to resolve instance(s) of {interfaceType.Name}");
            }
        }
Exemplo n.º 2
0
        public void InterfaceBindingResolution()
        {
            var factory = new NinjectKernelFactory();
            var kernel  = factory.CreateKernel(Mock.Of <DTE2>());

            // Requires actual DTE2 implementation: see class-level comment for
            // SettingsStoreServiceStub class
            kernel.Rebind <ISettingsStoreService>().To <SettingsStoreServiceStub>();

            var typesToResolve = new List <Type>
            {
                typeof(ICommand)
            };

            // IoC bindings not defined
            var excludedTypes = new List <Type>
            {
                typeof(IIntValueControl),
                typeof(IUserPreferencesModel)
            };

            var assembly           = Assembly.GetAssembly(typeof(IDteEventsSubscriber));
            var assemblyInterfaces = assembly
                                     .GetTypes()
                                     .Where(t => t.IsInterface)
                                     .Except(excludedTypes);

            typesToResolve.AddRange(assemblyInterfaces);

            foreach (var interfaceType in typesToResolve)
            {
                var objects = kernel.GetAll(interfaceType);
                Assert.IsNotEmpty(objects, $"Unable to resolve instance(s) of {interfaceType.Name}");
            }
        }
Exemplo n.º 3
0
        /// <summary>
        /// Initialization of the package; this method is called right after the
        /// package is sited, so this is the place where you can put all the
        /// initialization code that rely on services provided by VisualStudio.
        /// </summary>
        protected override void Initialize()
        {
            WorkingFilesWindowCommand.Initialize(this);
            base.Initialize();

            var dte2          = (DTE2)GetService(typeof(DTE));
            var kernelFactory = new NinjectKernelFactory();

            _kernel = kernelFactory.CreateKernel(dte2);

            InitializeServices(_kernel);
        }
        /// <summary>
        /// Initialization of the package; this method is called right after the
        /// package is sited, so this is the place where you can put all the
        /// initialization code that rely on services provided by VisualStudio.
        /// </summary>
        /// <param name="cancellationToken">
        /// A cancellation token to monitor for initialization cancellation,
        /// which can occur when VS is shutting down.
        /// </param>
        /// <param name="progress">A provider for progress updates.</param>
        /// <returns>
        /// A task representing the async work of package initialization, or an
        /// already completed task if there is none. Do not return null from
        /// this method.
        /// </returns>
        protected override async Task InitializeAsync(
            CancellationToken cancellationToken,
            IProgress <ServiceProgressData> progress)
        {
            var dte2 = await GetServiceAsync(typeof(DTE)) as DTE2;

            var kernelFactory = new NinjectKernelFactory();

            _kernel = kernelFactory.CreateKernel(dte2);

            InitializeServices(_kernel, this);

            // When initialized asynchronously, the current thread may be a
            // background thread at this point. Do any initialization that
            // requires the UI thread after switching to the UI thread.

            await this.JoinableTaskFactory.SwitchToMainThreadAsync(cancellationToken);

            await WorkingFilesWindowCommand.InitializeAsync(this);
        }