/// <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) { existing = new TElement(); existing.ContentItem = contentElement.ContentItem; contentElement.Data[name] = existing.Data; return(existing); } return(existing); }
/// <summary> /// Gets a content element by its name. /// </summary> /// <param name="contentElement">The <see cref="ContentElement"/>.</param> /// <param name="name">The name of the content element.</param> /// <typeparam name="TElement">The expected type 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 { var result = contentElement.Get(typeof(TElement), name); if (result == null) { return(null); } if (result is TElement te) { return(te); } throw new InvalidCastException($"Failed casting content to '{typeof(TElement).Name}', check you have registered your content part with AddContentPart?"); }
/// <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 { return((TElement)contentElement.Get(typeof(TElement), name)); }