■ 지정한 타입의 항목을 갖는 제네릭 리스트 구하기

------------------------------------------------------------------------------------------------------------------------


TestProject.zip


Program.cs

 

 

using System;

using System.Collections.Generic;

 

namespace TestProject

{

    /// <summary>

    /// 프로그램

    /// </summary>

    class Program

    {

        //////////////////////////////////////////////////////////////////////////////////////////////////// Method

        ////////////////////////////////////////////////////////////////////////////////////////// Static

        //////////////////////////////////////////////////////////////////////////////// Private

 

        #region 프로그램 시작하기 - Main()

 

        /// <summary>

        /// 프로그램 시작하기

        /// </summary>

        private static void Main()

        {

            Console.Title = "지정한 타입의 항목을 갖는 제네릭 리스트 구하기";

 

            List<Item> sourceList = new List<Item>() { Item.A, Item.B };

 

            Type itemType = sourceList.GetType().GetGenericArguments()[0];

 

            dynamic list = GetGenericList(itemType);

 

            list.Add(Item.A);

 

            Console.WriteLine("항목 타입   : {0}", itemType      );

            Console.WriteLine("리스트 타입 : {0}", list.GetType());

            Console.WriteLine("첫번째 항목 : {0}", list[0]       );

        }

 

        #endregion

 

        #region 제네릭 리스트 구하기 - GetGenericList(itemType)

 

        /// <summary>

        /// 제네릭 리스트 구하기

        /// </summary>

        /// <param name="itemType">항목 타입</param>

        /// <returns>제네릭 리스트</returns>

        private static dynamic GetGenericList(Type itemType)

        {

            Type genericListType = typeof(List<>);

 

            Type targetListType = genericListType.MakeGenericType(new Type[] { itemType });

 

            object targetListObject = Activator.CreateInstance(targetListType);

 

            return targetListObject;

        }

 

        #endregion

    }

}

 

------------------------------------------------------------------------------------------------------------------------

Posted by 사용자 icodebroker