public static DescriptionPackage Create(DescriptionPackageIdentity identity, Uri siteOrigin, IEnumerable <IDescription> descriptions, DescriptionTreeFactory treeFactory = default, bool ownsDescriptions = default) { identity = identity.EnsureNotNull(nameof(identity)).AsReadOnly().EnsureValid(); siteOrigin.EnsureNotNull(nameof(siteOrigin)); var locDescriptions = descriptions.EnsureNotNull(nameof(descriptions)).EnsureNoNullElements().Value; treeFactory.EnsureNotNull(nameof(treeFactory)); // var package = default(DescriptionPackage); var tree = default(IDescriptionTree); try { package = new DescriptionPackage() { _identity = identity }; package.SetSiteOrigin(siteOrigin); tree = (treeFactory ?? DescriptionTreeFactoryOption.Require())(rootNamespace : new Namespace(name : MetadataName.NewName()), ownsRootNamespace : true); foreach (var description in locDescriptions) { tree.Children.AddComponent(component: new MetadataTreeNode(metadataElement: new EmbeddedMetadataTreeElement(embeddedMetadata: description, ownsEmbeddedMetadata: ownsDescriptions))); } package.WriteDA(location: ref package._tree, value: tree); tree.SetPackage(package); return(package); } catch (Exception exception) { DisposeMany(exception, tree, package); throw; } }
public DescriptionTreeFactoryOption(DescriptionTreeFactory factory) { factory.EnsureNotNull(nameof(factory)); // _factory = factory; }