KeiStory

728x90
반응형

C# ExpandoObject 를 이용해 Dynamic 한 객체 만들기

 

DevExpress Grid 에 Model 데이터를 바인딩하기 위해서는 반드시 각 필드가 Property 로 구현되어야합니다.

쿼리 결과를 동적으로 받아서 처리하는 경우 dynamic 객체 바인딩하는 경우 제대로 표시가 되지 않습니다.

ExpandoObject 를 이용하여 이를 해결 할 수 있습니다.

아래처럼 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 에 바인딩하게되면

제대로 화면에 표시됩니다.

 

728x90

공유하기

facebook twitter kakaoTalk kakaostory naver band