C#

[C#] 외부함수를 멤버함수처럼 사용하기

소프트웨어 아키텍처 2022. 12. 26. 16:13

확장 메서드 (Extension Methods)

개인적으로 아주 훌륭한 기능이라고 생각하는 확장 메서드...

static 메서드로서 특정 클래스나 구조체 심지어 인터페이스까지 메서드를 확장가능하게 한다.

그리고 이렇게 확장된 메서드는 마치 멤버함수마냥 사용이 가능하다.

 

한번 아주 간단한 예제를 보도록 하자.

아래의 코드는 List 클래스를 확장한 AddRangeExceptNull 메서드 이다.

    public static class ListExtensionMethods
    {
	public static void AddRangeExceptNull<T>(this List<T> obj, IEnumerable<T> collection)
        {
            if (collection == null) return;

            obj.AddRange(collection);
        }
   }

 

작성시에 아래의 빨간색 키워드는 필수이니까 반드시 타이핑하도록 하자.

 

이렇게 정의된 확장 메서드는 아래와 같이 멤버함수처럼 사용이 가능하다.

 

아......... 조타......

다시한번 마소의 은혜에 감사하도록 하자.

 

 

 

또한 이 기능의 아주 훌륭한 점은 닷넷에서 이미 제공해주는 자료형 또한 확장이 가능하다는 점이다.

그래서 본인의 경우 위 처럼 IEnumerable 타입이나, IList 와 같은 자료형을 확장하여 사용한다.