예제 #1
0
        static void Main(string[] args)
        {
            Console.WriteLine("BaseContainer:");
            var baseContainer = new BaseContainer <string>();

            baseContainer.DoStuff("");
            Console.WriteLine("Container:");
            var container = new Container <string>();

            container.DoStuff("");
            container.DoStuff(new List <string>());
            Console.WriteLine("ContainerChild:");
            var child = new ContainerChild <string>();

            child.DoStuff("");
            child.DoStuff(new List <string>());
            Console.WriteLine("ContainerChildWithOverride:");
            var childWithOverride = new ContainerChildWithOverride <string>();

            childWithOverride.DoStuff("");
            childWithOverride.DoStuff(new List <string>());
            //note covariance
            Console.WriteLine("Covariance Example:");
            var covariantExample   = new Container <someBase>();
            var covariantParameter = new Container <someChild>();

            covariantExample.DoStuff(covariantParameter);

            // this won't work though :(
            // var covariantExample = new Container<Container<someBase>>();
            // var covariantParameter = new Container<Container<someChild>>();
            // covariantExample.DoStuff(covariantParameter);
            Console.ReadKey();
        }
예제 #2
0
 public static void DoStuff <T, Tother>(this ContainerChildWithOverride <T> container, IEnumerable <Tother> collection) where Tother : T
 {
     Console.WriteLine("\tContainerChildWithOverride.DoStuff<Tother>()");
 }