서로 다른 Class 에서 Action 콜백 호출하기
- C#/C# 문법
- 2022. 12. 8. 18:20
개요
- C# 에서 UI 개발을 진행하다 보면, 이벤트를 매우 많이 사용하는 경우가 있습니다.
- 또한, 서로 다른 폼 혹은 서로 다른 클래스끼리 상태가 변경 되었을 경우, 다른 컴포넌트 혹은 클래스로 상태의 정보를 전달해야 하는 경우가 있습니다.
- 이를 구현하기 위한 방법은 여러가지가 있겠지만, 그 중에서도 저는 Action 콜백을 이용하여 서로 다른 Class 에서 Action 콜백을 호출하는 방법에 대해서 알려 드리려고 합니다.
ActionStart.cs
- 먼저,
ActionStart.cs
클래스를 생성하였습니다. - 여기서
Action<bool>
타입의 Action 속성을 하나 생성하였습니다. - 그리고,
Start
함수 안에서 action 콜백 return 값으로 true 값을 전달하는 것을 볼 수 있습니다. - 이제 해당 콜백을 받은 이벤트 핸들러가 정의되어 있는
Program.cs
코드를 보도록 하겠습니다.
namespace ConsoleApp1
{
public class ActionStart
{
public Action<bool> action { get; set; }
public ActionStart(Action<bool> action)
{
this.action = action;
}
public void Start()
{
this.action.Invoke(true);
}
}
}
Program.cs
- 앞서,
Action<bool>
action 을 Invoke 해주는ActionStart.cs
클래스를 생성하고 구현하였습니다. - 다음은 실제로 해당 콜백이 일어날 경우, 이벤트가 실행되는 코드는 이벤트 핸들러를 구현합니다.
- 다음 코드에서의 이벤트 핸들러는
TestEventHandler
메서드 입니다. actionStart.Start()
로 Start 함수가 실행 되면,ActionStart.cs
에서 정의되어 있는 Start 메서드가 호출되어action.Invoke(true)
콜백 값이 리턴되어 최종적으로TestEventHandler(bool result)
이벤트 핸들러의 argument 인 result 값에 true 가 바인딩 되는 것을 확인할 수 있습니다.- 이렇듯, 서로 다른 Class 에서 Action 함수를 이용하여 상태 값 혹은 데이터 값을 주고 받을 수 있습니다.
using ConsoleApp1;
Action<bool> action = TestEventHandler;
ActionStart actionStart = new(action);
actionStart.Start();
void TestEventHandler(bool result)
{
Console.WriteLine($"result : {result}");
}
728x90
'C# > C# 문법' 카테고리의 다른 글
[C#] 헤드퍼스트 디자인패턴 - 전략패턴 (0) | 2023.02.22 |
---|---|
[C# 문법] Linq Aggregate vs String.Join (0) | 2022.12.08 |
[C#] Tensorflow Serving C# gRPC Model Status 체크 (0) | 2022.07.23 |
[C# 문법] async 및 await 를 사용한 비동기 프로그래밍 (0) | 2022.07.22 |
[C# 문법] Linq 성능 개선 (0) | 2022.06.10 |
이 글을 공유하기