public ReplaceRegistrationStrategy(ReplacementBehavior behavior) { Behavior = behavior; }
public static void OrderedAdd <T>(this IList <T> list, T item, Comparison <T> onCompare, ReplacementBehavior replacementBehavior = ReplacementBehavior.KeepBoth) { var index = 0; while (index < list.Count && onCompare(list[index], item) <= 0) { index++; } switch (replacementBehavior) { case ReplacementBehavior.Ignore: if (index > 0 && onCompare(list[index - 1], item) == 0) { return; } goto default; case ReplacementBehavior.Replace: if (index > 0 && onCompare(list[index - 1], item) == 0) { list.RemoveAt(index - 1); index--; } goto default; default: list.Insert(index, item); break; } }
/// <summary> /// Replaces existing service registrations based on the specified <see cref="ReplacementBehavior"/>. /// </summary> /// <param name="behavior">The behavior to use when replacing services.</param> public static RegistrationStrategy Replace(ReplacementBehavior behavior) { return(new ReplaceRegistrationStrategy(behavior)); }