사용자 지정 확장명 메서드 구현 및 호출 방법(C# 프로그래밍 가이드)

이 항목에서는 모든 .NET 형식에 대한 사용자 고유의 확장 메서드를 구현하는 방법을 보여 줍니다. 클라이언트 코드는 확장 메서드를 포함하는 DLL에 대한 참조를 추가하고 확장 메서드가 정의된 네임스페이스를 지정하는 using 지시문을 추가하여 확장 메서드를 사용할 수 있습니다.

확장 메서드를 정의하고 호출하려면

  1. 확장 메서드가 포함될 정적 클래스를 정의합니다.

    클래스가 클라이언트 코드에 표시되어야 합니다. 액세스 가능성 규칙에 대한 자세한 내용은 액세스 한정자를 참조하세요.

  2. 최소한 포함하는 클래스와 동일한 표시 유형으로 확장 메서드를 정적 메서드로 구현합니다.

  3. 메서드의 첫 번째 매개 변수는 메서드가 작동하는 형식을 지정합니다. this 한정자가 앞에 와야 합니다.

  4. 호출 코드에 using 지시문을 추가하여 확장 메서드 클래스를 포함하는 네임스페이스를 지정합니다.

  5. 형식의 인스턴스 메서드인 것처럼 메서드를 호출합니다.

    연산자가 적용되는 형식을 나타내기 때문에 첫 번째 매개 변수는 호출 코드에서 지정되지 않고 컴파일러가 개체 형식을 이미 알고 있습니다. 매개 변수 2 ~ n에 대한 인수만 제공하면 됩니다.

예시

다음 예제에서는 CustomExtensions.StringExtension 클래스에 WordCount라는 확장 메서드를 구현합니다. 이 메서드는 첫 번째 메서드 매개 변수로 지정된 String 클래스에 대해 작동합니다. CustomExtensions 네임스페이스를 애플리케이션 네임스페이스로 가져오고, Main 메서드 내부에서 메서드가 호출됩니다.

namespace CustomExtensions
{
    // Extension methods must be defined in a static class.
    public static class StringExtension
    {
        // This is the extension method.
        // The first parameter takes the "this" modifier
        // and specifies the type for which the method is defined.
        public static int WordCount(this string str)
        {
            return str.Split(new char[] {' ', '.','?'}, StringSplitOptions.RemoveEmptyEntries).Length;
        }
    }
}
namespace Extension_Methods_Simple
{
    // Import the extension method namespace.
    using CustomExtensions;
    class Program
    {
        static void Main(string[] args)
        {
            string s = "The quick brown fox jumped over the lazy dog.";
            // Call the method as if it were an
            // instance method on the type. Note that the first
            // parameter is not specified by the calling code.
            int i = s.WordCount();
            System.Console.WriteLine("Word count of s is {0}", i);
        }
    }
}

.NET 보안

확장 메서드는 특정 보안 취약성은 없습니다. 형식 자체에서 정의된 인스턴스 또는 정적 메서드를 기준으로 모든 이름 충돌이 해결되기 때문에 확장 메서드를 사용하여 형식의 기존 메서드를 가장할 수는 없습니다. 확장 메서드는 확장된 클래스의 개인 데이터에 액세스할 수 없습니다.

참고 항목