프로그래밍

확장 메서드란?

itssue-host 2024. 10. 21. 17:51

확장 메서드란 this 키워드를 이용하여 parameter 변수를 선언하고 해당 변수를 사용하는 코드에서는 같은 타입의 변수일 경우 바로 메서드를 확인할 수 있는 메서드를 의미한다. 즉, "."을 찍었을 경우 나오는 메서드 중 일부는 확장 메서드일 수 있다.

 

확장 메서드를 만들기 위해서는 반드시 클래스가 확장 클래스이어야 한다.

 

즉, static class 이어야 한다.

 

아래의 예를 보자.

 

public static class InfraExtensions
{
    public static string ToSerialize<T>(this T data) where T : class
    {
        if (data.xIsEmpty()) return default;
        var option = new JsonSerializerOptions()
        {
            PropertyNameCaseInsensitive = true,
            ReferenceHandler = ReferenceHandler.IgnoreCycles,
            Converters = { new ObjectIdConverter() }
        };
        
        return JsonSerializer.Serialize(data, option);
    }

    public static T ToDeserialize<T>(this string json) where T : class
    {
        if (json.xIsEmpty()) return default;
        var option = new JsonSerializerOptions()
        {
            PropertyNameCaseInsensitive = true,
            ReferenceHandler = ReferenceHandler.IgnoreCycles,            
            Converters = { new ObjectIdConverter() }
        };
        return JsonSerializer.Deserialize<T>(json, option);
    }
}

 

설명과 같이 class는 static으로 선언되어 있고 method의 첫 번째 파라미터는 this를 사용하고 있다.

 

실제 사용 코드를 보자.

 

message.ToDeserialize<Dictionary<string, object>>()

 

위와 같이 사용할 수 있다.

 

message는 json string이고 해당 코드를 Deserialize하는 코드이다.

 

이전에는 static method를 사용하는 경우 this 키워드 없이 유틸형 method를 사용했다면, 지금은 확장 메서드 도입으로 개발자가 "."을 입력한 순간 intellisense의 도움을 받을 수 있으므로 매우 유용하겠다.

 

도움이 되길 바라며...