这是PascalCase: SomeSymbol
这是camelCase: someSymbol
这是snake_case: some_symbol
所以我的问题是,是否有这个被广泛接受的名字:some-symbol
?它常用于网址.
我\xe2\x80\x99m 使用 C# 使用一些 JSON 和 API 进行工作。我想知道如何处理这样的事情。
\n\n其中一个 JSON 值是一个字符串,可以是以下值之一: \xe2\x80\x9cLast_Day\xe2\x80\x9d、\xe2\x80\x9cLast_Week\xe2\x80\x9d、\xe2\x80\x9cLast_Month\ xe2\x80\x9d。
\n\n在 TypeScript 中我可以这样做:
\n\ntype DateSince = "Last_Day" | "Last_Week" | "Last_Month"\n
Run Code Online (Sandbox Code Playgroud)\n\n然后我得到这样的类型提示:
\n\n\n\n如果该值不是这 3 个字符串,则会出现红色波浪线错误。从技术上讲,我的值仍然是一个字符串,这是我需要在 JSON API 请求和响应中使用的值。
\n\n我还没有找到在 C# 中做到这一点的好方法。在 C# 中是否可以相对轻松地做到这一点?
\n\n我理想的解决方案是让我将自定义类型分配给变量,而不是使用字符串。这样我就不必记住可能的字符串值。
\n我目前正在使用Json.net在我的应用程序中使用json.我使用的API为枚举发送了一个特定的字符串格式,例如:
对于TemperatureType
具有值的类型的枚举fahrenheit, Celcius
json值是:
{"result":["TemperatureType_fahrenheit","TemperatureType_Celcius"]}
我想使用转换器直接管理它以获得一个IList<TemperatureType>
但也适用于其他枚举类型.
有人有想法吗?
我尝试使用自定义JsonConverter:
if (reader.TokenType == JsonToken.String && reader.Value != null)
{
string value = reader.Value.ToString();
var splitValues = value.Split('_');
if (splitValues.Length == 2)
{
var type = Type.GetType(splitValues[0]);
return Enum.Parse(type, splitValues[1]);
}
}
Run Code Online (Sandbox Code Playgroud)
问题是GetType属性,因为我没有指示所需类型和没有命名空间的参数