Rumah >pembangunan bahagian belakang >C++ >Bagaimana Refleksi Boleh Menentukan Jenis Rujukan Boleh Null dalam .NET?
Memanfaatkan Refleksi untuk Mengenalpasti Jenis Rujukan Boleh Null dalam .NET
C# 8.0 dan versi yang lebih baru memperkenalkan jenis rujukan yang boleh dibatalkan, peningkatan ketara untuk keselamatan kod. Jenis ini secara eksplisit menentukan sama ada harta boleh memegang nilai nol, dengan itu mengurangkan risiko pengecualian rujukan nol.
Pertimbangkan contoh ini:
<code class="language-csharp">public class Foo { public string? Bar { get; set; } }</code>
Imbuhan ?
menetapkan Bar
sebagai jenis rujukan boleh batal. Refleksi .NET menyediakan mekanisme untuk menentukan sama ada harta kelas menggunakan jenis rujukan boleh batal.
Kaedah 1: Menggunakan NullabilityInfoContext
(.NET 6 dan lebih baru)
.NET 6 memperkenalkan NullabilityInfoContext
API, menawarkan pendekatan yang diperkemas kepada pengesanan jenis boleh batal. Ini adalah kaedah yang disyorkan.
<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>
Kaedah 2: Pemeriksaan Atribut Manual (Pra-.NET 6)
Sebelum .NET 6, semakan atribut manual diperlukan. Fungsi pembantu ini memudahkan ini:
<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>
Fungsi IsNullableHelper
mengkaji sifat-sifat ini:
System.Runtime.CompilerServices.NullableAttribute
(Menunjukkan harta boleh batal)System.Runtime.CompilerServices.NullableContextAttribute
(Menunjukkan jenis penutup yang boleh batal)Tafsiran Nilai Bait:
Kedua-dua atribut menggunakan nilai bait untuk kebolehbatalan:
Kesimpulan:
Refleksi memberi kuasa kepada pembangun untuk mengenal pasti jenis rujukan boleh batal dalam sifat kelas. Keupayaan ini penting untuk mengekalkan keselamatan jenis dan mencegah pengecualian rujukan nol.
Atas ialah kandungan terperinci Bagaimana Refleksi Boleh Menentukan Jenis Rujukan Boleh Null dalam .NET?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!