public static void TryPrepend <TRenderer>(this ObjectRendererCollection list)
     where TRenderer : class, IMarkdownObjectRenderer, new()
 {
     if (!list.Contains <TRenderer>())
     {
         list.Insert(0, new TRenderer());
     }
 }
Exemplo n.º 2
0
        /// <summary>
        /// Replaces a default object renderer.
        /// </summary>
        /// <typeparam name="TOriginal">Type of the object renderer to replace</typeparam>
        /// <param name="renderers">Object renderer collection</param>
        /// <param name="replacement">Replacement object renderer</param>
        /// <returns>The object renderer collection</returns>
        public static ObjectRendererCollection Replace <TOriginal>(
            this ObjectRendererCollection renderers,
            IMarkdownObjectRenderer replacement
            ) where TOriginal : IMarkdownObjectRenderer
        {
            var index = renderers.FindIndex(renderer => renderer.GetType() == typeof(TOriginal));

            if (index == -1)
            {
                throw new InvalidOperationException($"Could not find original object renderer for {typeof(TOriginal)}");
            }
            renderers.RemoveAt(index);
            renderers.Insert(index, replacement);
            return(renderers);
        }