-
확장 메서드란 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의 도움을 받을 수 있으므로 매우 유용하겠다.
도움이 되길 바라며...
'프로그래밍' 카테고리의 다른 글
리소스 관리 전략 (0) 2024.10.22 Json을 통한 Kafka ObjectId에 대한 처리 (0) 2024.10.21 ASP.NET CORE 8에서의 Exception 처리 (0) 2024.10.21 AWS Secrets Manager에 대하여 (0) 2024.10.21 ASP.NET CORE Serilog 설정 및 사용 (0) 2024.10.17