public void InitializeWorkItemExtensions(WorkItem workItem)
            {
                if (extensionsInitialized)
                {
                    return;
                }

                extensionsInitialized = true;

                IWorkItemExtensionService svc = workItem.Services.Get <IWorkItemExtensionService>();

                if (svc == null)
                {
                    return;
                }

                foreach (KeyValuePair <Type, Type> kvp in workItemExtensions)
                {
                    svc.RegisterExtension(kvp.Key, kvp.Value);
                }

                foreach (Type type in workItemRootExtensions)
                {
                    svc.RegisterRootExtension(type);
                }
            }
            public void InitializeWorkItemExtensions(WorkItem workItem)
            {
                if (extensionsInitialized)
                {
                    return;
                }

                extensionsInitialized = true;

                IWorkItemExtensionService svc = workItem.Services.Get <IWorkItemExtensionService>();

                if (svc == null)
                {
                    return;
                }

                WorkItemExtensionLoaderService extensionLoader = new WorkItemExtensionLoaderService();

                string[] orderedExtensions = extensionLoader.GetLoadOrder(workItemExtensions);
                foreach (string name in orderedExtensions)
                {
                    WorkItemExtensionMetadata metadata = workItemExtensions.Find(w => w.Name == name);
                    svc.RegisterExtension(metadata.WorkItemType, metadata.ExtensionType);
                }

                foreach (Type type in workItemRootExtensions)
                {
                    svc.RegisterRootExtension(type);
                }
            }
            protected override void TestableAddServices()
            {
                IWorkItemExtensionService extensions = Services.AddNew <WorkItemExtensionService, IWorkItemExtensionService>();

                extensions.RegisterRootExtension(typeof(RootWorkItemExtension));
                extensions.RegisterExtension(typeof(WorkItem), typeof(MockExtension));
                FinishInitialization();
            }
示例#4
0
        /// <summary>
        /// Finishes the initialization of <see cref="WorkItem"/> classes by calling the
        /// <see cref="IWorkItemExtensionService"/> and <see cref="OnInitialized()"/>. For
        /// root WorkItems, this will be called by the <see cref="CabApplication{TWorkItem}"/> after
        /// the modules are loaded (so root WorkItem extensions work). For child WorkItems,
        /// this will be called during <see cref="OnBuiltUp"/> automatically.
        /// </summary>
        protected internal void FinishInitialization()
        {
            IWorkItemExtensionService extensionsService = Services.Get <IWorkItemExtensionService>();

            if (extensionsService != null)
            {
                extensionsService.InitializeExtensions(this);
            }

            OnInitialized();
        }