(연관된 글이 2개 있습니다.)
                    
                    
                    정성스런 답변 너무 고맙습니다.
var type = listA.GetType().GetGenericArguments()[0];
Type listType = typeof(List<>);
Type genericListType = listType.MakeGenericType(new Type[] { type });
object objValue = Activator.CreateInstance(genericListType);
dynamic list = objValue;
list.Add(ListEnum.A);
알려주신 위의 코드대로 사용하면 확실히 GetGenericArguments로 제네릭 타입을 추출하여
dynamic으로 객체를 만듬으로써 타입을 재활용할 수 있었습니다.
하지만 저의 목적은
재활용하고자 하는 타입의 empty List를 만드는것이 목적이 아니라
enum의 원소들을 그대로 갖고있는 
List로 변환하기 위함이였습니다.
아래는 좀 더 자세한 코드입니다.
코드파일도 첨부했습니다.
===================코드=================================
using System;
using System.Collections.Generic;
using System.Linq;
namespace CreateEnumTypeList
{
  enum DiatoicScale
  {
    C = 1,
    D = 2,
    E = 3,
    F = 4,
    G = 5,
    A = 6,
    B = 7
  };
  enum CM7
  {
    R = DiatoicScale.C,
    M3 = DiatoicScale.E,
    P5 = DiatoicScale.G,
    M7 = DiatoicScale.B
  }
  enum Dm7
  {
    R = DiatoicScale.D,
    m3 = DiatoicScale.F,
    P5 = DiatoicScale.A,
    m7 = DiatoicScale.C
  }
  enum Em7
  {
    R = DiatoicScale.E,
    m3 = DiatoicScale.G,
    P5 = DiatoicScale.B,
    m7 = DiatoicScale.D
  }
  enum FM7
  {
    R = DiatoicScale.F,
    m3 = DiatoicScale.A,
    P5 = DiatoicScale.C,
    m7 = DiatoicScale.E
  }
  enum G7
  {
    R = DiatoicScale.G,
    m3 = DiatoicScale.B,
    P5 = DiatoicScale.D,
    m7 = DiatoicScale.F
  }
  enum Am7
  {
    R = DiatoicScale.A,
    m3 = DiatoicScale.C,
    P5 = DiatoicScale.E,
    m7 = DiatoicScale.G
  }
  enum Bm7b5
  {
    R = DiatoicScale.B,
    m3 = DiatoicScale.D,
    P5 = DiatoicScale.F,
    m7 = DiatoicScale.A
  }
  class Chords
  {
    public List<List<DiatoicScale>> DiatonicProto { get; set; } = new List<List<DiatoicScale>>
    {
      Enum.GetValues(typeof(CM7)).Cast<CM7>().ToList().Cast<DiatoicScale>().ToList(),
      Enum.GetValues(typeof(Dm7)).Cast<Dm7>().ToList().Cast<DiatoicScale>().ToList(),
    };
    public List<List<DiatoicScale>> Diatonic { get; set; } = new List<List<DiatoicScale>>();
    private bool IsTypeOfType(Type type)
    {
      return typeof(Type).IsAssignableFrom(type);
    }
    public void Set(Type chord)
    {
      var ChordEnumValues = Enum.GetValues(chord);
      var ChordElemenList = ChordEnumValues.Cast<CM7>().ToList();
      /**
       * Cast<CM7> 이 부분을 아래의 뭔가처럼 바꿔야하지만
       * 어떻게해야지 chord에서 타입으로 쓸 수 있는
       * Enum을 반환받을 수 있는지 모르겠다.
       */
      //var ChordElemenList = ChordEnumValues.Cast<Type>().ToList();
      Console.WriteLine(ChordElemenList[0]); // 출력 : R
      Diatonic.Add(ChordElemenList.Cast<DiatoicScale>().ToList());
    }
    public void Exe()
    {
      Set(typeof(CM7));
      Console.WriteLine(Diatonic[0][0]); // 출력 : C
      /**
       * // ChordElemenList에서 CM7으로 케스팅을 하고 있기 때문에 
       * "소스 배열 형식을 대상 배열 형식에 할당할 수 없습니다."의 오류를 출력한다.
       */
      //Chords.Set(typeof(Dm7));
      //Chords.Set(typeof(Em7));
      //Chords.Set(typeof(FM7));
      //Chords.Set(typeof(G7));
      //Chords.Set(typeof(Am7));
      //Chords.Set(typeof(Bm7b5));
      
    }
  }
  class Program
  {
    static void Main(string[] args)
    {
      Chords.Exe();
      Console.ReadLine();
    }
    static Chords Chords = new Chords();
  }
}
===================코드 끝=================================
고맙습니다.
        
        [연관 글]
                    
                    
                    
                    
                    
    
                    
                    
                    
                    
                    
                
                    [최초 등록일: ]
                    [최종 수정일: 7/5/2018]