System.Text.Json: 사용자 정의 Enum 값 이름
System.Text.Json은 사용자 정의를 지정하는 기본 제공 방법을 제공하지 않습니다. 열거형 멤버의 값입니다. 그러나 이를 달성하기 위한 몇 가지 옵션이 있습니다.
사용자 정의 JsonConverterFactory 사용:
JsonConverterFactory에서 상속하고 CanConvert 및 CreateConverter 메서드를 구현하는 사용자 정의 변환기 클래스를 만듭니다. CanConvert에서 변환할 유형이 열거형인지 확인합니다. CreateConverter에서 사용자 정의 값을 처리하는 사용자 정의 JsonEnumConverter 인스턴스를 생성합니다.
타사 라이브러리 사용:
Macross.Json.Extensions와 같은 라이브러리는 다음을 지원하는 변환기를 제공합니다. 사용자 정의 열거형 값 이름. 라이브러리를 설치하고 [JsonConverter(typeof(JsonStringEnumMemberConverter))]로 열거형을 장식합니다.
.NET 6 이하에서 사용자 지정 변환기 및 팩터리 만들기:
In .NET 6 이하에서는 사용자 지정 이름을 사용하여 열거형을 왕복하려면 사용자 지정 변환기 및 변환기 팩터리가 필요합니다. 여기에는 정수 및 문자열 값의 구문 분석 처리, [Flags] 열거형 구성 요소의 이름 변경, 가능한 모든 기본 유형의 열거형 변환이 포함됩니다.
일반 열거형 변환기 사용:
필요한 경우 이름 변환을 위한 사용자 지정 재정의를 사용하여 [Flags] 및 비[Flags] 열거형을 모두 처리하기 위해 일반 열거형 변환기를 만들 수 있습니다. 이는 각 유형에 대해 특정 변환기를 사용하는 것보다 더 복잡합니다.
사용자 정의 변환기 팩토리를 사용하는 코드 예:
public class JsonEnumMemberStringEnumConverter : JsonConverterFactory { public override bool CanConvert(Type typeToConvert) => baseConverter.CanConvert(typeToConvert); public override JsonConverter CreateConverter(Type typeToConvert, JsonSerializerOptions options) { var query = from field in typeToConvert.GetFields(BindingFlags.Public | BindingFlags.Static) let attr = field.GetCustomAttribute<EnumMemberAttribute>() where attr != null && attr.Value != null select (field.Name, attr.Value); var dictionary = query.ToDictionary(p => p.Item1, p => p.Item2); if (dictionary.Count > 0) return new JsonStringEnumConverter(new DictionaryLookupNamingPolicy(dictionary, namingPolicy), allowIntegerValues).CreateConverter(typeToConvert, options); else return baseConverter.CreateConverter(typeToConvert, options); } }
추가 참고 사항:
위 내용은 System.Text.Json에서 열거형 값 이름을 사용자 정의하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!