가령 테이블에 아래와 같은 형태의 컬럼이 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