コード例 #1
0
 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);
     }
 }
コード例 #2
0
        // 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);
            }
        }
コード例 #3
0
 IMetadata IMetadata.CreateCopy(IMetadataTreeElement element, ReadOnlyStateTag readOnlyState)
 => CreateCopy(element: element, readOnlyState: readOnlyState);
コード例 #4
0
 public MetadataBase CreateCopy(IMetadataTreeElement element, ReadOnlyStateTag readOnlyState = default)
 => (MetadataBase)CreateCopy(copyArgs: new CopyArgs(element: element, readOnlyState: readOnlyState));
コード例 #5
0
 public CopyArgs(IMetadataTreeElement element, ReadOnlyStateTag readOnlyState)
     : base(readOnlyState: readOnlyState)
 {
     Element = element;
 }
コード例 #6
0
 public MetadataTreeNode(string caption = null, IMetadataTreeElement metadataElement = null, ReadOnlyStateTag readOnlyState = null)
     : this(parent : null, caption : caption, metadataElement : metadataElement, readOnlyState : readOnlyState)
 {
 }