Extension 클래스를 통해 기존 클래스를 확장하기

C# 3.0 에서부터 새로 제공되는 기능으로 Extensions 라는 것이 있다.

이 것은 기존에 정의되어 있는 클래스를 확장할 수 있도록 해주는 방법이라고 할 수 있다. 백문이 불여일견이니 어떻게 하는지 한번 살펴보도록 하겠다.

일단 먼저 기본으로 제공되는 String에 현재의 문자열의 길이를 리턴해주는 GetStringLength() 라는 함수를 제공하도록 해보겠다.

프로젝트를 하나 생성하고 StringExtensions 라는 이름의 클래스를 하나 추가한 후 아래와 같이 코딩하도록 하자.

namespace ExtensionMethodTest
{
    public static class StringExtensions
    {
        public static int GetTextLength(this string s)
        {
            return s.Length;
        }
    }
}

이와 같이 코딩한 후 폼을 하나 추가하고 폼에서 String 변수를 하나 생성해서 아래와 같이 코딩하도록 하자.

using System;
using System.Windows.Forms;

namespace ExtensionMethodTest
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }

        private void Form1_Load(object sender, EventArgs e)
        {
            string message = "Hello~~~~~";
            MessageBox.Show(message.GetTextLength().ToString());
        }
    }
}

위와 같이 string 함수에 위에서 정의한 함수가 확장되어 들어가 있는 것을 볼 수 있다.



Leave a Reply