簡體   English   中英

返回非可空類型 C# generics,接受可空類型

[英]Return non-nullable type with C# generics, accepting a nullable type

我想要一個檢查 null 的通用方法,如果它是 null,它應該拋出異常,如果不是,它應該返回它的不可空類型。

我有一個通用方法,稱為GetRequiredValue

public static TValue GetRequiredValue<TClass, TValue>(this TClass obj, Expression<Func<TClass, TValue>> expression)
{ 
    // Omitted reflection logic to get property value of the object
    var value = ...;

    if (value is null) throw new Exception("Value is null.");
    
    return value;
}

一個 class,包含一個可為 null 的字符串屬性:

public class MyClass
{
    public string? Name { get; set; }
}

調用GetRequiredValue時,返回類型是string? ,但我知道它是不可為 null 的版本:

var val = obj.GetRequiredValue(x => x.Name); // return type is string?

甚至可以返回不可為空的類型嗎?

這是應該使用NotNullAttribute的地方。

指定 output 不是 null,即使相應類型允許也是如此。 指定當調用返回時輸入參數不是 null。

用它注釋GetRequiredValue的返回類型:

[return: NotNull]
public static TValue GetRequiredValue<TClass, TValue>(this TClass obj, Expression<Func<TClass, TValue>> expression)

另見: 可空 static 分析

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM