protected override void Dispose(bool explicitDispose) { if (explicitDispose) { _children?.Dispose(); _inclusions?.Dispose(); _metadataElementLink?.Target?.Dispose(); } _children = null; _inclusions = null; _metadataElementLink = null; base.Dispose(explicitDispose); }
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); } }
protected override void OnDeserialized(StreamingContext context) { base.OnDeserialized(context); // var children = ReadDA(ref _children); if (children == null) { WriteDA(ref _children, children = new MetadataTreeNodeContainer(this)); } children.SetOwnerComponent(this); // var inclusions = ReadDA(ref _inclusions); if (inclusions == null) { WriteDA(ref _inclusions, inclusions = new MetadataTreeNodeInclusionContainer(this)); } inclusions.SetOwnerComponent(this); // ReadDA(ref _metadataElement) .Fluent().NullCond(metadataElement => SetMetadataElement(new Link <IMetadataTreeNode, IMetadataTreeElement>(this, metadataElement))); }