![](/img/trans.png)
[英]C# how union with object of type IEnumerable<KeyValuePair<Guid, string>>
[英]How to Create a TypeScript like String Literal Union type in C#
我正在使用一些JSON和API在C#中工作。 我想知道如何處理這樣的事情。
JSON值之一是字符串,可以是以下值之一:“ Last_Day”,“ Last_Week”,“ Last_Month”。
在TypeScript中,我可以這樣做:
type DateSince = "Last_Day" | "Last_Week" | "Last_Month"
然后我得到這樣的類型提示:
如果值不是那三個字符串,則出現紅色花鍵行錯誤。 從技術上講,我的值仍然是字符串,這是我需要與JSON API請求和響應一起使用的值。
我還沒有找到使用C#做到這一點的好方法。 甚至可以相對輕松地用C#做到這一點嗎?
我的理想解決方案是讓我將自定義類型分配給變量,而不是使用字符串。 這樣,我不必記住可能的字符串值。
在C#中,您可以使用Enums。
public enum DateSince
{
Last_Day ,
Last_Week,
Last_Month
}
用法:
var datesince = DateSince.Last_Day;
正如@PatrickRoberts和@afrazier所建議的那樣,最好的方法是使用枚舉和Json.NET StringEnumConverter。
[JsonConverter(typeof(StringEnumConverter))]
public enum DateSince
{
[EnumMember(Value = "LAST_DAY")]
LastDay,
[EnumMember(Value = "LAST_WEEK")]
LastWeek,
[EnumMember(Value = "LAST_MONTH")]
LastMonth,
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.