public MetadataTreeNode(IMetadataTreeNode parent, string caption = null, IMetadataTreeElement metadataElement = default, ReadOnlyStateTag readOnlyState = default) : base(caption : caption, readOnlyState : readOnlyState) { // _children = new MetadataTreeNodeContainer(this); _inclusions = new MetadataTreeNodeInclusionContainer(this); // if (metadataElement != null) { SetMetadataElement(link: new Link <MetadataTreeNode, IMetadataTreeElement>(this, metadataElement)); } if (parent != null) { parent.Children.AddComponent(this); } }
// TODO: Put strings into the resources. // public static TMetadata EnsureHasMetadataOfType <TMetadata>(this IMetadataTreeElement element) where TMetadata : class, IMetadata { element.EnsureNotNull(nameof(element)); // var elementMetadata = element.Metadata; if (elementMetadata == null) { throw new EonException($"Элемент дерева метаданных '{element}' не связан с объектом метаданных."); } var elementMetadataAsTResult = elementMetadata as TMetadata; if (elementMetadataAsTResult == null) { throw new EonException($"Тип объекта метаданных элемента дерева метаданных не совместим с требуемым типом '{typeof(TMetadata)}' (элемент дерева метаданных '{element}' связан с объектом метаданных типа '{elementMetadata.GetType()}')."); } else { return(elementMetadataAsTResult); } }
IMetadata IMetadata.CreateCopy(IMetadataTreeElement element, ReadOnlyStateTag readOnlyState) => CreateCopy(element: element, readOnlyState: readOnlyState);
public MetadataBase CreateCopy(IMetadataTreeElement element, ReadOnlyStateTag readOnlyState = default) => (MetadataBase)CreateCopy(copyArgs: new CopyArgs(element: element, readOnlyState: readOnlyState));
public CopyArgs(IMetadataTreeElement element, ReadOnlyStateTag readOnlyState) : base(readOnlyState: readOnlyState) { Element = element; }
public MetadataTreeNode(string caption = null, IMetadataTreeElement metadataElement = null, ReadOnlyStateTag readOnlyState = null) : this(parent : null, caption : caption, metadataElement : metadataElement, readOnlyState : readOnlyState) { }