/// <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()); }
/// <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()); }