gpt4 book ai didi

c# - 是否可以使用别名映射到枚举?

转载 作者:太空宇宙 更新时间:2023-11-03 22:32:22 25 4
gpt4 key购买 nike

我有一个 http 请求,它有一个值的属性。这个值有 2 个可能的选项,比方说 Standard 和 Boosted。我为此使用枚举。

我还需要从我的数据库中获取相同的值,但在数据库中这个值被称为其他东西。例如,它们被称为 TypeS 和 TypeB。

我正在寻找一种将它们相互映射的简单方法。

我试过使用别名,但似乎不起作用。

pubic enum RequestType
{
[Alias("TypeS")]
Standard,
[Alias("TypeB")]
Boosted
}

public class ReturnObject
{
public RequestType type {get; set;}
}

我正在使用存储过程从数据库中获取记录。

db.SqlList<ReturnObject>("EXEC SomeStoredProc @someParameter",
new { someParameter }).ToList();

ReturnObject.type 始终是 Standard,即使数据库返回 TypeB,这告诉我它使用默认值实例化枚举。

最佳答案

latest v5.5.1 on MyGet , OrmLite supports char enums , 例如

[EnumAsChar]
public enum SomeEnum
{
Value1 = 'A',
Value2 = 'B',
Value3 = 'C',
Value4 = 'D'
}

否则,OrmLite 支持持久枚举的唯一其他方式是按名称(默认):

public enum SomeEnum
{
Value1,
Value2,
Value3,
Value4,
}

通过枚举整数值:

[Flags] //or [EnumAsInt]
public enum SomeEnum
{
None = 0,
Value1 = 1 << 0,
Value2 = 1 << 1,
Value3 = 1 << 2,
Value4 = 1 << 3,
}

或者如我的第一个示例中所示的字符值。

或者,您需要使用它存储在数据库中的名称,但您可以通过使用 [EnumMember] 对其进行注释,使用不同的值对其进行序列化,例如:

[DataContract]
public enum SomeEnum
{
[EnumMember(Value = "VALUE 1")]
Value1,
[EnumMember(Value = "VALUE 2")]
Value2,
[EnumMember(Value = "VALUE 3")]
Value3,
[EnumMember(Value = "VALUE 4")]
Value4,
}

关于c# - 是否可以使用别名映射到枚举?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56842536/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com