[c#] 제네릭을 활용한 속성과 이벤트

C#에서 제네릭을 사용하면 코드를 더 유연하고 재사용 가능하게 만들 수 있습니다. 이번 블로그에서는 제네릭을 활용하여 속성과 이벤트를 만드는 방법에 대해 알아보겠습니다.

제네릭 속성 (Generic Property)

제네릭을 사용하여 클래스나 인터페이스의 속성을 정의할 수 있습니다.

public class GenericProperty<T>
{
    private T _value;

    public T Value
    {
        get { return _value; }
        set { _value = value; }
    }
}

위의 예제에서는 GenericProperty 클래스를 제네릭으로 선언하고, Value 속성을 제네릭 타입으로 정의하고 있습니다. 이렇게 하면 GenericProperty 인스턴스를 생성할 때에 원하는 타입을 지정하여 사용할 수 있습니다.

GenericProperty<int> intProperty = new GenericProperty<int>();
intProperty.Value = 10;

GenericProperty<string> stringProperty = new GenericProperty<string>();
stringProperty.Value = "Hello, World!";

제네릭 이벤트 (Generic Event)

마찬가지로 제네릭을 사용하여 이벤트를 정의할 수 있습니다.

public class EventPublisher<T>
{
    public event EventHandler<T> DataReceived;

    public void OnDataReceived(T data)
    {
        DataReceived?.Invoke(this, data);
    }
}

위의 예제에서는 EventPublisher 클래스를 제네릭으로 선언하고, DataReceived 이벤트를 제네릭 타입으로 정의하고 있습니다. 이렇게 하면 이벤트를 발생시킬 때에도 원하는 타입을 사용할 수 있습니다.

EventPublisher<string> stringPublisher = new EventPublisher<string>();
stringPublisher.DataReceived += (sender, data) => Console.WriteLine($"Data received: {data}");
stringPublisher.OnDataReceived("Some data");

이렇게 제네릭을 활용하면 타입에 관계없이 강력하고 유연한 속성과 이벤트를 만들 수 있습니다.

제네릭을 사용하여 속성과 이벤트를 정의하는 방법에 대해 알아보았습니다. 제네릭을 적절히 활용하면 코드의 재사용성을 높일 수 있으며, 보다 유연하고 강력한 코드를 작성할 수 있습니다.

이상으로 C#에서 제네릭을 활용한 속성과 이벤트에 대해 알아보았습니다.