/// <summary> /// Gets a content element by its name or create a new one. /// </summary> /// <typeparam name="TElement">The expected type of the content element.</typeparam> /// <typeparam name="name">The name of the content element.</typeparam> /// <returns>The content element instance or a new one if it doesn't exist.</returns> public static TElement GetOrCreate <TElement>(this ContentElement contentElement, string name) where TElement : ContentElement, new() { var existing = contentElement.Get <TElement>(name); if (existing == null) { var newElement = new TElement { ContentItem = contentElement.ContentItem }; contentElement.Data[name] = newElement.Data; contentElement.Elements[name] = newElement; return(newElement); } return(existing); }
/// <summary> /// Gets a content element by its name. /// </summary> /// <typeparam name="TElement">The expected type of the content element.</typeparam> /// <typeparam name="name">The name of the content element.</typeparam> /// <returns>The content element instance or <code>null</code> if it doesn't exist.</returns> public static TElement?Get <TElement>(this ContentElement contentElement, string name) where TElement : ContentElement => (TElement?)contentElement.Get(typeof(TElement), name);