가령 테이블에 아래와 같은 형태의 컬럼이 n개 있는 경우가 있다.


item_type_1 

 item_count_1

 0

 10


만약 item_type_1, item_count_1이 n개 더 있어서 item_type_2, item_count_2... 등 더 늘어나고, 늘어날때마다 


int itemType1;

int itemCount1;


과 같은 변수도 같이 늘어난다고 가정하자. (이때 각 컬럼에 할당된 데이터도 변수에 있다고 가정)


일반적으로 조건문을 활용해서 구현할수도 있겠지만, 

Reflection 기능을 이용해서 좀더 짧은 코드로 유연하게 아래처럼 구현할 수도 있다.



using System.Reflection;


public class Program

{

public int itemType1;

public int itemCount1;

.....


public int columnCount = 10;    // 위의 종류가 반복되는 숫자


static void Main(string[] args)

{

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

{

string key1 = string.format("itemType{0}", i+1);

string key2 = string.format("itemCount{0}", i+1);


FieldInfo _typeField1 = this.GetType().GetField(key1, BindingFlags.NonPublic | BindingFlags.Instance | BindingFlags.Public);

FieldInfo _typeField2 = this.GetType().GetField(key2, BindingFlags.NonPublic | BindingFlags.Instance | BindingFlags.Public);


int typeValue = (int)_typeField1.GetValue(this);

int itemCount = (int)_typeField2.GetValue(this);

}

}

}


이와는 반대로 변수명을 string 형태로 받아오는 것도 Reflection 기능을 이용하면 편하다.

'C#' 카테고리의 다른 글

강제 형변환 캐스팅과 as 의 차이  (0) 2024.01.12

WRITTEN BY
빨강꼬마

,