[C#] ExpandoObject 사용하기

C# 2022. 9. 15. 08:13
728x90

쿼리 결과 컬럼이 유동적인 항목을 그리드에 바인딩 하기 위해 ExpandoObject 를 사용했습니다.

필드를 동적으로 추가하고 값을 설정하는 방법입니다.

dynamic expando = new ExpandoObject();
AddProperty(expando, "ID", 1);
AddProperty(expando,"Name","Kjun");

private void AddProperty(ExpandoObject expando, string propertyName, object propertyValue)
{
    var expandoDic = expando as IDictionary<string,object>;
    
    if(expandoDic.ContainsKey(propertyName))
    {
      expandoDic[propertyName] = propertyValue;
    }
    else
    {
      expandoDic.Add(propertyName, propertyValue);
    }
}

expando  에는 ID, Name 필드가 추가되고 각 1, kjun 값으로 값이 셋팅됩니다.

위 정의한 expando 객체를 ObservableCollection<Object> 에 담아서 Grid 에 바인딩합니다. (DevExpress GridControl)

728x90
Posted by kjun.kr
,