Extention Method (확장 메소드)




확장 메소드는 C# 3.0 에 추가된 문법으로 기존 클래스에 수정없이 메소드를 추가 시키는 문법이다. 이를 이용하면 기존의 BCL 에 사용자가 임의의 메소드를 추가 시킬 수 있다.

규칙!!
static 클래스를 정의하여 추가 하고 싶은 메소드를 static 메소드로 추가한다.


< 예제 >

버튼 객체(Button)에 Greeting 이라는 새로운 메소드를 추가하는 예제 이다.

namespace ExtentionMethodDemo_6
{
    public static class MyClass
    {
        public static void Greeting(this Button str)
        {
            Console.WriteLine("Hello");
        }

        // 오버로딩 가능, 인자 개수 제한 없음
        public static void Greeting(this Button btn, string message)
        {
            MessageBox.Show(message);
        }

        // 오버로딩 가능, 인자 개수 제한 없음
        public static void Greeting(this Button btn, int a)
        {
            MessageBox.Show(a.ToString());
        }
    }
}

MyClass 라는 static 클래스를 추가하고, Greeting 이라는 새로운 매소드를 작성 하였다. 매소드의 첫 번째 인자는 추가 대상이 되는 객체이다. 여기서는 버튼 객체에 추가 하려고 하므로 this Button 이라고 작성해 준다. this 를 써주는 것은 문법! 그냥 외워라!!. 두 번째 인자부터가 매서드의 인자가 된다. 여러개의 매서드를 넣을 수도 있다. 또한 확장 메서드는 Overloading 을 지원하기 때문에 다른 인자로 하여 작성할 수 있다.





메인 코드로 와서 Button 객체인 button1뒤에 . 을 찍어보면 사용 가능한 멤버가 보이는데 확장 메서드로 작성한 Greeting 메서드가 보인다. Greeting 앞에 빨간색 상자와 아래로 향하는 화살표가 보이는데 이것이 확장 메서드를 나타내는 아이콘이다.







Greeting 메소드를 오버로딩 하였기 때문에 위와 같이 오버로딩된 메소드 목록을 볼 수 있다.



< 예제 소스 >



Posted by six605
,