첨부 실행 코드는 나눔고딕코딩 폰트를 사용합니다.
유용한 소스 코드가 있으면 icodebroker@naver.com으로 보내주시면 감사합니다.
블로그 자료는 자유롭게 사용하세요.

■ 열거형 인터페이스에서 데이터 테이블 구하기 예제

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

/// <summary>

/// 테스트 클래스

/// </summary>

public class TestClass

{

    /// <summary>

    /// 명칭

    /// </summary>

    public string Name { get; set; }

}

 

TestClass[] testClassArray = new TestClass[]

{

    new TestClass { Name = "길동" },

    new TestClass { Name = "철수" },

    new TestClass { Name = "영희" }

};

 

DataTable dataTable = GetDataTable<TestClass>(testClassArray);

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

 

■ 열거형 인터페이스에서 데이터 테이블 구하기

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

using System;

using System.Collections.Generic;

using System.ComponentModel;

using System.Data;

using System.Reflection;

 

#region 데이터 테이블 구하기 - GetDataTable<T>(sourceEnumerable)

 

/// <summary>

/// 데이터 테이블 구하기

/// </summary>

/// <typeparam name="T">항목 타입</typeparam>

/// <param name="sourceEnumerable">소스 열거형 인터페이스</param>

/// <returns>데이터 테이블</returns>

public DataTable GetDataTable<T>(IEnumerable<T> sourceEnumerable)

{

    DataTable targetDataTable = new DataTable(typeof(T).Name);

 

    PropertyInfo[] propertInfoArray = typeof(T).GetProperties(BindingFlags.Public | BindingFlags.Instance);

 

    foreach(PropertyInfo propertyInfo in propertInfoArray)

    {

        Type propertyType = propertyInfo.PropertyType;

         

        if(propertyType.IsGenericType && propertyType.GetGenericTypeDefinition().Equals(typeof(Nullable<>)))

        {

            propertyType = new NullableConverter(propertyType).UnderlyingType;

        }

 

        targetDataTable.Columns.Add(propertyInfo.Name, propertyType);

    }

 

    foreach(T item in sourceEnumerable)

    {

        object[] valueArray = new object[propertInfoArray.Length];

 

        int propertyInfoCount = propertInfoArray.Length;

 

        for(int i = 0; i < propertyInfoCount; i++)

        {

            valueArray[i] = propertInfoArray[i].GetValue(item, null);

        }

         

        targetDataTable.Rows.Add(valueArray);       

    }

 

    return targetDataTable;  

}

 

#endregion

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

Posted by 사용자 icodebroker
TAG

댓글을 달아 주세요