首頁 >後端開發 >C++ >如何使用反射檢測 C# 中的可空引用型別?

如何使用反射檢測 C# 中的可空引用型別?

Mary-Kate Olsen
Mary-Kate Olsen原創
2025-01-18 10:32:09351瀏覽

How Can I Detect Nullable Reference Types in C# Using Reflection?

利用 .NET 反射來偵測可空引用型別

C# 8.0 引入了可空引用類型,提供了一種更明確的處理可空值的方法,增強了程式碼可讀性,確保開發人員意識到潛在的空引用。

考慮以下包含可空屬性的類別:

<code class="language-c#">public class Foo
{
    public string? Bar { get; set; }
}</code>

如果要透過反射來確定類別的屬性是否使用了可空引用類型,可以使用以下方法:

NullabilityInfoContext API

在 .NET 6 及更高版本中,NullabilityInfoContext API 提供了一種方便的方法來檢查可空參考類型。更多信息,請參考相關文件。

手動檢查屬性

在 .NET 6 之前,需要手動檢查屬性來確定可空性。以下程式碼示範了這種方法:

<code class="language-c#">public static bool IsNullable(PropertyInfo property) =>
    IsNullableHelper(property.PropertyType, property.DeclaringType, property.CustomAttributes);</code>

IsNullableHelper 方法遍歷屬性類型、宣告類型和自訂屬性,以識別任何 [NullableAttribute][NullableContextAttribute] 屬性。

如果這些屬性中的任何一個存在且值為 2,則該屬性被認為是可空的。否則,它不是可空的。

總之,使用 .NET 反射檢查可空參考類型涉及檢查自訂屬性以及在不同版本的 .NET 中使用對應的 API。

以上是如何使用反射檢測 C# 中的可空引用型別?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn