프로그래밍
확장 메서드란?
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의 도움을 받을 수 있으므로 매우 유용하겠다.
도움이 되길 바라며...