Reflection을 활용하여 .NET 내 Null 허용 참조 유형 식별
C# 8.0 이상 버전에서는 코드 안전성이 크게 향상되는 nullable 참조 유형이 도입되었습니다. 이러한 유형은 속성이 null 값을 보유할 수 있는지 여부를 명시적으로 정의하므로 null 참조 예외의 위험이 줄어듭니다.
다음 예를 고려해보세요.
<code class="language-csharp">public class Foo { public string? Bar { get; set; } }</code>
?
접미사는 Bar
을 null 허용 참조 유형으로 지정합니다. .NET 리플렉션은 클래스 속성이 nullable 참조 유형을 활용하는지 확인하는 메커니즘을 제공합니다.
방법 1: NullabilityInfoContext
활용(.NET 6 이상)
.NET 6에서는 null 허용 유형 감지에 대한 간소화된 접근 방식을 제공하는 NullabilityInfoContext
API를 도입했습니다. 추천드리는 방법입니다.
<code class="language-csharp">public static bool IsNullable(Type type) { var context = type.GetNullabilityInfoContext(); return context.ReadNullableAnnotation(type, out var annotation) && annotation == NullabilityState.Nullable; }</code>
방법 2: 수동 특성 검사(.NET 6 이전)
.NET 6 이전에는 수동 속성 확인이 필요했습니다. 이러한 도우미 기능을 사용하면 다음과 같은 작업이 가능해집니다.
<code class="language-csharp">public static bool IsNullable(PropertyInfo property) => IsNullableHelper(property.PropertyType, property.DeclaringType, property.CustomAttributes); public static bool IsNullable(FieldInfo field) => IsNullableHelper(field.FieldType, field.DeclaringType, field.CustomAttributes); public static bool IsNullable(ParameterInfo parameter) => IsNullableHelper(parameter.ParameterType, parameter.Member, parameter.CustomAttributes);</code>
IsNullableHelper
함수는 다음 속성을 검사합니다.
System.Runtime.CompilerServices.NullableAttribute
(null 허용 속성을 나타냄)System.Runtime.CompilerServices.NullableContextAttribute
(nullable 포함 유형을 나타냄)바이트 값 해석:
두 속성 모두 null 허용 여부에 대해 바이트 값을 사용합니다.
결론:
리플렉션을 통해 개발자는 클래스 속성에서 null 허용 참조 유형을 식별할 수 있습니다. 이 기능은 유형 안전성을 유지하고 null 참조 예외를 방지하는 데 필수적입니다.
위 내용은 .NET에서 리플렉션이 Null 허용 참조 유형을 어떻게 결정할 수 있습니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!