C#에서는 런타임에 동적으로 프로퍼티를 생성하고 바인딩하는 여러 방법이 있습니다. 특히, UI 개발이나 유연한 데이터 모델링 시 유용하게 사용됩니다.
1. ExpandoObject 활용하기
ExpandoObject는 동적으로 프로퍼티를 추가할 수 있는 객체입니다. 다음 예제는 ExpandoObject에 프로퍼티를 추가하고 접근하는 방법입니다.
dynamic person = new System.Dynamic.ExpandoObject();
person.Name = "홍길동";
person.Age = 30;
Console.WriteLine($"이름: {person.Name}, 나이: {person.Age}");
2. DynamicObject 상속하여 커스텀 동적 객체 만들기
DynamicObject를 상속하면, 더 세밀한 동적 멤버 제어가 가능합니다. 이를 통해 get/set 접근자를 구현할 수 있습니다.
using System.Dynamic;
using System.Collections.Generic;
public class MyDynamic : DynamicObject
{
private Dictionary<string, object> _properties = new Dictionary<string, object>();
public override bool TryGetMember(GetMemberBinder binder, out object result)
{
return _properties.TryGetValue(binder.Name, out result);
}
public override bool TrySetMember(SetMemberBinder binder, object value)
{
_properties[binder.Name] = value;
return true;
}
}
// 사용 예시
var dyn = new MyDynamic();
dyn.Name = "동적객체";
Console.WriteLine(dyn.Name);
3. 데이터 바인딩과 동적 프로퍼티
WPF 같은 UI 프레임워크에서 동적 프로퍼티를 바인딩하려면, INotifyPropertyChanged 구현이 필요합니다. DynamicObject와 결합해서 사용할 수도 있습니다.
예를 들어, ExpandoObject를 INotifyPropertyChanged와 결합하여 바인딩 가능한 동적 객체를 만들 수 있습니다.
정리
동적 프로퍼티 생성은 유연한 코딩을 가능케 하며, ExpandoObject나 DynamicObject를 활용해 쉽게 구현할 수 있습니다. 특히 UI 데이터 바인딩 시 유용하니 필요에 따라 적절히 활용하시기 바랍니다.
'C#' 카테고리의 다른 글
| C# 참조 타입과 값 타입 복사 동작 비교 (0) | 2026.06.24 |
|---|---|
| C# ViewModel과 모델 변환 로직 설계 (0) | 2026.06.23 |
| C# 코드 분석 도구(Roslyn Analyzer) 제작하기 (0) | 2026.06.22 |
| C# 이벤트 기반 비동기 패턴(EAP) 사용법 (0) | 2026.06.22 |
| C# Thread.Join과 Thread.Sleep 차이와 활용 (0) | 2026.06.19 |