using System; using System.Collections.Generic; namespace ICSharpCode.Decompiler.Tests.TestCases.Pretty { public class ExplicitVariantImpl : IVariant { string IVariant.Convert(object value) { return null; } } public interface IConstrainedCovariant where T : class { T Get(); } public interface IContravariant { void Set(T value); } public interface ICovariant { T Get(); } public interface IVariant { TOut Convert(TIn value); } public static class VarianceConversions { public static IEnumerable Widen(IEnumerable xs) { return xs; } public static Action Narrow(Action a) { return a; } public static Func ToObjectFunc(Func f) { return f; } public static ICovariant WidenInterface(ICovariant c) { return c; } public static IContravariant NarrowInterface(IContravariant c) { return c; } public static VariantFunc ConvertDelegate(VariantFunc f) { return f; } public static void ArgumentConversion(ICovariant c, IContravariant c2) { UseCovariant(c); UseContravariant(c2); } private static void UseCovariant(ICovariant c) { } private static void UseContravariant(IContravariant c) { } } public delegate TResult VariantFunc(TArg arg); }