/// <summary> /// Makes a typed comparer from the given comparer. /// </summary> /// <typeparam name="T">The type of items the comparer should compare.</typeparam> /// <param name="comparer">The comparer to convert to a typed comparer.</param> /// <returns>A typed comparer.</returns> /// <exception cref="System.ArgumentNullException">The comparer is null.</exception> public static IComparer <T> Typed <T>(this IComparer comparer) { if (comparer == null) { throw new ArgumentNullException("comparer"); } return(TypedComparer <T> .GetComparer(comparer)); }
public static IComparer GetComparer(IComparer <T> comparer) { TypedComparer <T> typed = comparer as TypedComparer <T>; if (typed != null) { return(typed.Comparer); } IComparer untyped = comparer as IComparer; if (untyped != null) { return(untyped); } return(new UntypedComparer <T>(comparer)); }