[英]Custom null assertion in JetBrains Rider
我有一個自定義擴展方法來檢查Guid?
值:
public static bool IsNullOrDefault(this Guid? guid)
{
return !guid.HasValue || guid.value == Guid.Empty;
}
當我在代碼中使用該方法時,我希望Rider會在可能的System.InvalidOperationException斷言中考慮此方法。 但事實並非如此。
public void Foo(Guid? guid)
{
if (guid.IsNullOrDefault())
{
throw new Exception();
}
var x = guid.Value;
^ There is still a yellow squiggle here, saying Possible System.InvalidOperationException
...
}
我嘗試通過覆蓋自定義(語句)模式來創建自己的Null Checking模式:
if ($EXPR$.IsNullOrDefault()) throw new System.ArgumentNullException($NAME$);
但這也不起作用。 如何配置Rider以將我的自定義方法視為guid.HasValue
或guid != null
?
我不確定Rider是否足夠聰明,無法識別出您已經檢查了這一點。 我認為您可以改為使用?.
檢查是否為null
符號
var x = guid?.Value;
在評估.value
之前,檢查guid
是否為null
,如果是這種情況,則僅返回null
。
然后,您可以將支票放到后面,這樣它就會像
var x guid?.value;
if(x is null)
Throw new Exception();
或者,您可以返回默認值,而不是引發異常(調用)。
讓我知道它是如何工作的!
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.