コード例 #1
0
 /// <summary>
 /// Add range of appenders
 /// </summary>
 /// <param name="appenders"></param>
 /// <param name="policy"></param>
 /// <returns></returns>
 /// <exception cref="InvalidOperationException">if key already exists and <paramref name="policy"/> is <see cref="LineFactoryAddPolicy.ThrowIfExists"/></exception>
 public LineFactoryComposition AddRange(IEnumerable <ILineFactory> appenders, LineFactoryAddPolicy policy = LineFactoryAddPolicy.ThrowIfExists)
 {
     foreach (var appender in appenders)
     {
         Add(appender, policy);
     }
     return(this);
 }
コード例 #2
0
        /// <summary>
        /// Create a clone of <paramref name="previous"/>'s appender, and add new components to it.
        /// </summary>
        /// <param name="previous">previous part</param>
        /// <param name="appender">appender to add</param>
        /// <param name="policy">add policy</param>
        /// <returns>part with another appender</returns>
        public static ILine AddAppender(this ILine previous, ILineFactory appender, LineFactoryAddPolicy policy = LineFactoryAddPolicy.OverwriteIfExists)
        {
            ILineFactory previousAppender;

            if (previous.TryGetAppender(out previousAppender))
            {
                ILineFactory newAppender = previousAppender == null ? appender : (ILineFactory) new LineFactoryComposition().Add(previousAppender, policy).Add(appender, policy);
                return(newAppender.Create <ILinePart>(previous));
            }
            else
            {
                return(appender.Create <ILinePart>(previous));
            }
        }
コード例 #3
0
 /// <summary>
 /// Add constructor delegate
 /// </summary>
 /// <param name="collection"></param>
 /// <param name="func"></param>
 /// <param name="policy"></param>
 /// <returns></returns>
 /// <exception cref="InvalidOperationException">if key already exists and <paramref name="policy"/> is <see cref="LineFactoryAddPolicy.ThrowIfExists"/></exception>
 public static ILineFactoryCollection Add <Line, A0, A1, A2>(this ILineFactoryCollection collection, Func <ILineFactory, ILine, A0, A1, A2, Line> func, LineFactoryAddPolicy policy = LineFactoryAddPolicy.ThrowIfExists) where Line : ILine
 => collection.Add(new Delegate3 <Line, A0, A1, A2>(func), policy);