Пример #1
0
        /// <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);
        }
Пример #2
0
        /// <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?");
        }
Пример #3
0
 /// <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));
 }