개발 공부/C# 기초

[C# 기초] ExpandoObject(인스턴스 생성/속성, 메서드, 이벤트 추가)

아밍나 2022. 10. 14. 15:21
728x90

ExpandoObject 클래스

런타임(Run time)에 동적으로 추가 및 제거할 수 있는 멤버 개체.

→ 런타임?

- 네임스페이스

System.Dynamic

- 인스턴스 생성

dynamic 오브젝트명 = new ExpandoObject();

- 인스턴스에 속성, 메서드 및 이벤트 추가

속성, 메서드

using System;
using System.Dynamic;

dynamic Obj = new ExpandoObject();
Obj.prop = "New Property";
Console.WriteLine(Obj.prop); //New Property

Obj.thisYear = 2022;
Obj.Increment = (Action)(() => { Obj.thisYear++; });

Obj.Increment();
Console.WriteLine(Obj.thisYear); //2023

 

 

이벤트

using System;
using System.Dynamic;

class Program
{
    static void Main(string[] args)
    {
        dynamic Obj = new ExpandoObject();
        //이벤트 생성 및 초기화
        Obj.newEvent = null;
        //eventHandler
        Obj.newEvent += new EventHandler(newHandler);
        Obj.newEvent(Obj, new EventArgs());
    }
    static void newHandler(object sender, EventArgs e)
    {
    	//출력: NewHandler for System.Dynamic.ExpandoObject event
    	Console.WriteLine("NewHandler for {0} event", sender);
    }
}

→ EventHandler?

더보기

EventHandler

이벤트 데이터가 없는 이벤트를 처리할 메서드.
public delegate void EventHandler(object? sender EventArgs e);

- sender: 이벤트 소스(Object)
- e: 이벤트 데이터가 포함되지 않은 개체(EventArgs)

 

 

 

 

 

 

 

 

 


참고자료)

https://learn.microsoft.com/ko-kr/dotnet/api/system.dynamic.expandoobject?view=net-6.0 

 

ExpandoObject 클래스 (System.Dynamic)

런타임에 동적으로 추가 및 제거할 수 있는 멤버가 있는 개체를 나타냅니다.

learn.microsoft.com

https://learn.microsoft.com/ko-kr/dotnet/api/system.eventhandler?view=net-6.0 

 

EventHandler 대리자 (System)

이벤트 데이터가 없는 이벤트를 처리할 메서드를 나타냅니다.

learn.microsoft.com

 

728x90
반응형