簡體   English   中英

如何在C#中創建像String Literal Union類型的TypeScript

[英]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"

然后我得到這樣的類型提示:

VS Code類型提示,建議3個可能的值。

如果值不是那三個字符串,則出現紅色花鍵行錯誤。 從技術上講,我的值仍然是字符串,這是我需要與JSON API請求和響應一起使用的值。

我還沒有找到使用C#做到這一點的好方法。 甚至可以相對輕松地用C#做到這一點嗎?

我的理想解決方案是讓我將自定義類型分配給變量,而不是使用字符串。 這樣,我不必記住可能的字符串值。

在C#中,您可以使用Enums。

public enum DateSince
{
    Last_Day ,
    Last_Week,
    Last_Month
}

用法:

var datesince = DateSince.Last_Day;

閱讀有關C#枚舉的更多信息

正如@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.

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