Exemple #1
0
        public static void GenericTest()
        {
            var c4 = new C4 <C2>();

            Console.WriteLine("c4 is C4<C2> : {0}", c4 is C4 <C2>);//c4 is C4는 ㅅㅂ 안통하네
            Console.WriteLine("c4 is C4<I1> : {0}", c4 is C4 <I1>);
            Console.WriteLine("c4 is C4<C1> : {0}", c4 is C4 <C1>);
            Console.WriteLine("c4.GetType() == typeof(C4<>) : {0}", c4.GetType() == typeof(C4 <>));
            Console.WriteLine("c4 is C4.GetType().IsGenericType : {0}", c4.GetType().IsGenericType);
            Console.WriteLine("c4.GetType().GetGenericTypeDefinition()==typeof(C4<>) : {0}", c4.GetType().GetGenericTypeDefinition() == typeof(C4 <>));
            //Result : TFFFTT
            //C4<I1> c5 = (C4<I1>)c4; casting 불가
            //C4<C2> c6 = (c4<C2>)c4; casting 불가
            Console.WriteLine(c4.GetType().BaseType);
            Console.WriteLine(Convenience.IsGenericTypeOf(typeof(C4 <>), c4));
            Console.WriteLine(c4.GetType().GetGenericTypeDefinition());
            Console.WriteLine("{0}, {1}", c4.GetType().GetGenericArguments()[0], c4.GetType().GetGenericArguments().Length);
            Console.WriteLine(c4.GetType().GetGenericTypeDefinition() == typeof(C4 <C1>));
            Console.WriteLine(c4.GetType().GetGenericTypeDefinition() == typeof(C4 <C2>));
            Console.WriteLine(c4 is C4 <C2>);
            Console.WriteLine(c4.GetType() == typeof(C4 <C2>));
            Console.WriteLine(c4.GetType().GetGenericTypeDefinition() == typeof(C4 <>));
            Console.WriteLine(typeof(C4 <C1>));
            Console.WriteLine(typeof(C4 <C1>).GetGenericArguments()[0]);
            Console.WriteLine(typeof(C4 <>).GetGenericArguments().Length);
            Console.WriteLine(typeof(C4 <>).GetGenericArguments()[0]);
            Console.WriteLine(typeof(C4 <>) == typeof(C4 <>));
            Console.WriteLine(typeof(C4 <int>) == typeof(C4 <>));
            Console.WriteLine(Convenience.IsGenericTypeOf(typeof(C4 <>), c4));
            Console.WriteLine(Convenience.IsGenericTypeOf(typeof(C4 <C2>), c4));
            Console.WriteLine(Convenience.IsGenericTypeOf(typeof(C4 <C1>), c4));
            Console.WriteLine(Convenience.IsGenericTypeOf(typeof(C4 <C3>), c4));
            Console.WriteLine(Convenience.IsGenericTypeOf(typeof(C4 <I1>), c4));
            Console.WriteLine("--------------------");
            var c2 = new C2();

            Console.WriteLine(c2.GetType().GetInterfaces().Contains <Type>(typeof(I1)));
        }