프로그래밍/C#

C#에서 대리자와 이벤트의 중요성 및 활용 방법

shimdh 2025. 8. 31. 09:37
728x90

C# 프로그래밍에서 대리자와 이벤트는 모듈화된 코드 작성과 이벤트 중심 프로그래밍을 가능하게 하는 핵심 개념입니다. 이 글에서는 대리자와 이벤트의 정의, 목적, 사용 방법 및 실용적인 예제를 통해 이들의 중요성을 살펴보겠습니다.

대리자란 무엇인가?

정의

대리자는 타입 안전한 함수 포인터로, 특정 시그니처를 가진 메서드에 대한 참조를 보유합니다. 이는 메서드의 반환 유형과 매개변수를 정의합니다.

목적

대리자는 메서드를 다른 메서드의 인수로 전달하거나 변수로 저장할 수 있게 해줍니다. 이는 콜백을 구현하거나 특정 행동이 발생했을 때 알림을 제공하는 데 유용합니다.

728x90

대리자 생성 및 사용

public delegate void Notify(string message);

위의 코드는 문자열 인수를 받는 Notify라는 대리자를 정의합니다. 대리자를 사용하는 방법은 다음과 같습니다:

using System;

public delegate void Notify(string message);

public class ProcessBusinessLogic
{
    public void Process(Notify notifyMethod)
    {
        Console.WriteLine("비즈니스 로직 처리 중...");
        notifyMethod("처리 완료!");
    }
}

class Program
{
    static void Main()
    {
        ProcessBusinessLogic process = new ProcessBusinessLogic();
        process.Process(delegate (string msg) 
        { 
            Console.WriteLine(msg); 
        });
    }
}

이벤트란 무엇인가?

정의

이벤트는 멀티캐스트 대리자의 특수한 형태로, 프로그램의 한 부분(발행자)이 다른 부분(구독자)에게 알림을 보낼 수 있게 해줍니다.

목적

이벤트는 GUI 애플리케이션에서 사용자 상호작용을 처리할 때 컴포넌트를 밀접하게 결합하지 않고도 널리 사용됩니다.

이벤트 선언 및 사용

public class Publisher
{
    public event Notify OnCompleted;

    public void DoWork()
    {
        Console.WriteLine("작업 중...");
        OnCompleted?.Invoke("작업 완료!");
    }
}

이벤트 구독 및 구독 취소

class Subscriber 
{
    public void Subscribe(Publisher pub)
    {
        pub.OnCompleted += HandleEvent;
    }

    private void HandleEvent(string message)
    {
        Console.WriteLine($"메시지 수신: {message}");
    }
}

실용적인 예제 시나리오

사용자가 작업을 완료한 후 피드백을 제출할 수 있는 애플리케이션을 구축한다고 상상해보세요. 여기서 대리자와 이벤트를 사용하는 방법은 다음과 같습니다:

  1. 피드백 처리를 위한 인터페이스 생성.
  2. 다양한 유형의 피드백 프로세서 구현(예: 이메일 알림 대 로그 기록).
  3. 피드백 제출이 발생할 때마다 이벤트를 통해 이러한 프로세서를 트리거.

이 구조는 컴포넌트 간의 느슨한 결합을 촉진하면서 유연성을 보장합니다.

결론

대리자와 이벤트를 이해하면 더 깔끔한 코드를 작성할 수 있을 뿐만 아니라 애플리케이션 내에서 관심사의 분리를 포함한 더 나은 설계 원칙을 촉진할 수 있습니다. 이러한 개념을 실용적인 예제와 함께 마스터하면 객체 간 비동기 통신이 필요한 다양한 시나리오를 효과적으로 처리할 수 있는 강력한 애플리케이션을 만들 수 있습니다!

728x90