示例#1
0
        /// <summary>
        /// Adds the page to the manager using the given owning package identifier.
        /// </summary>
        public void AddPage(IOptionsPage page)
        {
            var pageType = page.GetType();
            var categoryName = pageType.ComponentModel().Category ?? "";
            var displayName = pageType.ComponentModel().DisplayName ?? "";

            if (string.IsNullOrEmpty(categoryName))
                throw new ArgumentException(Strings.OptionsManager.PageCategoryRequired(page.GetType()));

            if (string.IsNullOrEmpty(categoryName))
                throw new ArgumentException(Strings.OptionsManager.PageDisplayNameRequired(page.GetType()));

            //TODO: validate attributes on the type, write to registry, etc.
            RegisterOptionsPage(registryRoot, serviceProvider.GetPackageGuidOrThrow(), categoryName, displayName, pageType);

            // Need to load the page into the collection for the owning package.
            AddPageToPackage(page, serviceProvider.AsDynamicReflection(), serviceProvider.GetType());
        }
示例#2
0
        /// <summary>
        /// Adds the page to the manager using the given owning package identifier.
        /// </summary>
        public void AddPage(IOptionsPage page)
        {
            var pageType     = page.GetType();
            var categoryName = pageType.ComponentModel().Category ?? "";
            var displayName  = pageType.ComponentModel().DisplayName ?? "";

            if (string.IsNullOrEmpty(categoryName))
            {
                throw new ArgumentException(Strings.OptionsManager.PageCategoryRequired(page.GetType()));
            }

            if (string.IsNullOrEmpty(categoryName))
            {
                throw new ArgumentException(Strings.OptionsManager.PageDisplayNameRequired(page.GetType()));
            }

            //TODO: validate attributes on the type, write to registry, etc.
            RegisterOptionsPage(registryRoot, serviceProvider.GetPackageGuidOrThrow(), categoryName, displayName, pageType);

            // Need to load the page into the collection for the owning package.
            AddPageToPackage(page, serviceProvider.AsDynamicReflection(), serviceProvider.GetType());
        }