示例#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)
            {
                var newElement = new TElement {
                    ContentItem = contentElement.ContentItem
                };
                contentElement.Data[name]     = newElement.Data;
                contentElement.Elements[name] = newElement;
                return(newElement);
            }

            return(existing);
        }
示例#2
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 => (TElement?)contentElement.Get(typeof(TElement), name);