[英]Get rid of "Nullable" warnings
我有以下代碼:
var keyValuePairs = JsonSerializer.Deserialize<Dictionary<string, object>>(jsonbytes);
var claims = keyValuePairs.Select(kvp => new Claim(kvp.Key, kvp.Value.ToString()));
如您所見,我的 ide 向我顯示了 Nullable 警告。
我知道我必須先檢查變量是否為 null,然后再使用它來消除此類警告。 但是我不知道如何在 linq 查詢中使用動態變量來做到這一點..?
我希望有人能告訴我在這種情況下如何避免這樣的警告。
IDE 給你這個警告,因為這個變量在到達這條線時可能是null
。
如果您完全確信永遠不會出現這種情況,您可以使用!
逃避這些警告:
keyValuePairs!.Select(kvp => new Claim(kvp.Key, kvp.Value!.ToString()));
正如pazcal所說,我已經可以使用a了。 在 object 逃避這樣的警告之后。 非常感謝您的提示。
無論如何,我現在將我的 function 更改為:
private IEnumerable<Claim> ParseClaimsFromJwt(string jwt)
{
if(jwt!=null && !String.IsNullOrEmpty(jwt)) {
var payload = jwt.Split('.')[1];
var jsonbytes = ParseBase64WithoutPadding(payload);
var keyValuePairs = JsonSerializer.Deserialize<Dictionary<string, object>>(jsonbytes);
if(keyValuePairs!=null && keyValuePairs.Count > 0) {
var claims = keyValuePairs!.Select(kvp => new Claim(kvp.Key!, kvp.Value!.ToString()!));
return claims;
} else {
throw new Exception("Error while deserializing jwt json string.");
}
} else {
throw new Exception("jwt value cannot be empty or null");
}
}
我希望,現在這是安全的:-)
非常感謝您的幫助。
在你的 .csproj 文件中,你會發現像這樣
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<TargetFramework>netstandard2.1</TargetFramework>
<Nullable>enable</Nullable>
</PropertyGroup>
</Project>
此<Nullable>enable</Nullable>
字段將被禁用。 我認為這是您的解決方案。 但不是安全的。
var claims = keyValuePairs?.Select(kvp => new Claim(kvp.Key, kvp.Value.ToString() ?? string.Empty));
這個怎么樣?
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.