enums 相关问题

一种数据类型,由一组名为元素,成员或类型的枚举器的命名值组成。

将枚举转换为字符串的最佳实践方法是什么?

我有这样的枚举: 公共枚举对象类型 { 类型一, 类型二, 类型三, ... 类型二十 } 然后我需要将此枚举转换为字符串。现在我这样做: 公共...

回答 11 投票 0

如何在 Spring Boot 中为枚举类型返回正确的验证错误?

我创建了一个演示 Spring Boot 应用程序。该请求接受一个汽车对象并返回该对象。我正在尝试找出一种方法,如果 carType 不是 v,则向用户发送正确的消息...

回答 1 投票 0

Blazor 自定义下拉列表,具有 HTML 选择并按文本排序,而不是枚举值

我正在尝试为枚举构建一个自定义 Blazor 下拉组件,该组件能够按枚举成员的显示值/文本对其进行排序。我有以下代码: 我正在尝试为枚举构建一个自定义 Blazor 下拉组件,该组件能够按枚举成员的“显示值/文本”对枚举成员进行排序。我有以下代码: <div> <select value="@this.SelectedValue" @onchange="@this.OnSelectedValueChanged" @key="@this.Items"> @foreach (var value in this.Items) { // Use enum value as value and display name as text. if (value is Enum enumName) { <option id="@value" value="@value">@enumName.GetDisplayName(CultureInfo.CurrentCulture)</option> } } </select> </div> 排序顺序枚举: public enum SortOrder { None, Ascending, Descending } 在文件后面的代码中: private List<TItem?> OriginalItems { get; set; } = []; [Parameter] [EditorRequired] public IEnumerable<TItem?> Items { get; set; } = []; [Parameter] public TItem? SelectedValue { get; set; } [Parameter] public EventCallback<TItem?> SelectedValueChanged { get; set; } [Parameter] public EventCallback<TItem?> OnValueChanged { get; set; } [Parameter] public SortOrder SortOrder { get; set; } protected override void OnInitialized() { base.OnInitialized(); this.OriginalItems = this.Items.ToList(); this.SortItems(); } protected async Task OnSelectedValueChanged(ChangeEventArgs args) { if (args.Value is not string value) { return; } if (this.SelectedValue is Enum _) { try { var result = (TItem?)Enum.Parse(typeof(TItem?), value); await this.SelectedValueChanged.InvokeAsync(result); await this.OnValueChanged.InvokeAsync(result); } catch { // ignored } } } private void SortItems() { if (this.SortOrder == SortOrder.None) { return; } if (typeof(TItem).BaseType == typeof(Enum)) { this.Items = this.SortOrder == SortOrder.Ascending ? [.. this.Items.OrderBy(f => (f as Enum)?.GetDisplayNameForEnum(CultureInfo.CurrentCulture))] : [.. this.Items.OrderByDescending(f => (f as Enum)?.GetDisplayNameForEnum(CultureInfo.CurrentCulture))]; } } GetDisplayValue函数仅获取枚举的显示值,并为放入下拉列表中的所有枚举实现,例如: private static string GetDisplayName(this SortOrder order, CultureInfo culture) { var de = culture.Name.StartsWith("de"); return order switch { SortOrder.None => de ? "Keine" : "None", SortOrder.Ascending => de ? "Aufsteigend" : "Ascending", SortOrder.Descending => de ? "Absteigend" : "Descending", _ => $"[[{type}]]" }; } 还有一个用于过滤的输入字段、过滤方法、过滤器大小以及其他一些内容,例如设置的 id。但是,我删除了它们,因为它们与问题无关。 TItem 是一个通用成员(在我的例子中仅用于枚举)。 当我将组件添加到页面时,初始排序起作用。搜索作品。但是,当我选择其中一项时,排序将被忽略,并且 select 似乎会按枚举成员值回退/“排序”(例如,value= 的 option 中指定的内容)。有没有办法始终让 select 按显示名称排序,即使在值选择更改后(调用 OnSelectedValueChanged() 后)? 提示:在SortItems()结束时调用OnSelectedValueChanged()不起作用。 提示 2:在 SortItems() 中的 this.OriginalItems = this.Items.ToList(); 之前调用 OnInitialized() 也没有帮助。 提示 3:对列表进行排序后,使用 this.Items 的列表索引作为选择中的值不起作用,并且会降级,即所选值已正确设置,但不再显示在下拉列表中。 我现在想出的解决方案是重写 SortItems 函数以返回一个值,无论集合是否更改(例如重新排序),然后使用 OnAfterRender() 调用 StateHasChanged()。 变化: protected override void OnAfterRender(bool firstRender) { if (!firstRender) { if (this.SortItems()) { this.StateHasChanged(); } } base.OnAfterRender(firstRender); } private bool SortItems() { if (this.SortOrder == SortOrder.None) { return false; } if (typeof(TItem).BaseType == typeof(Enum)) { var initialItems = this.Items.ToList(); this.Items = this.SortOrder == SortOrder.Ascending ? [.. this.Items.OrderBy(f => (f as Enum)?.GetDisplayName(CultureInfo.CurrentCulture))] : [.. this.Items.OrderByDescending(f => (f as Enum)?.GetDisplayName(CultureInfo.CurrentCulture))]; return !Enumerable.SequenceEqual(initialItems, this.Items); } return false; }

回答 0 投票 0

为什么我在 Enum->String 转换时收到“可能为空引用”警告?

我有一个 ArmorType 类型的私有字段。这是一个枚举。然后,我创建一个公共属性,以字符串形式返回该枚举值。但随后 Visual Studio 2022 告诉我存在可能为空

回答 1 投票 0

Typescript 中的常量枚举

我有一个使用 Typescript 的 React 应用程序。现在我遇到了 const enum 的问题。这是我的枚举: 导出 const enum Snack { 苹果 = 0, 香蕉=1, 橙色=2,

回答 2 投票 0

如何在启用混淆器的情况下保持枚举工作?

我开发了一个Android应用程序,在许多模块中使用Enums。现在我正在尝试保护我的应用程序免受逆向工程的影响,为此我在我的应用程序中启用了 proguard...

回答 2 投票 0

在 Haskell 中定义枚举的更好方法

我想要一种数据类型来表示可以通过特定名称寻址的有限整数集。我认为最好的方法是使用枚举。 然而,有一个小问题。唯一的...

回答 6 投票 0

如何在 Thymeleaf 中使用枚举作为方法参数?

我正在尝试调用一个方法,该方法将枚举作为我的 Thymeleaf 模板中的参数。枚举非常简单: 公共枚举语言{ C, 爪哇, 点网 } 正在调用的方法...

回答 1 投票 0

我可以导入 VBA 代码中的公共枚举作为 Access 中表字段的列表吗?

假设我在 Microsoft Access 数据库中有以下 VBA 代码。 选项比较数据库 公共枚举测试数据 富= 0 条 = 1 巴兹 = 2 结束枚举 仅供参考,我声明

回答 2 投票 0

pandas 数据框中的枚举,无法在枚举列上进行 groupby 吗?

我刚刚了解了枚举,并认为它们适合我正在编码的东西。但是当我运行这段代码时,出现错误。我是否试图做一些我不应该做的事情或者这是一个错误? 当...

回答 1 投票 0

如何对枚举成员进行分组但保持匹配详尽性检查

在 Rust 中,有没有一种方法可以对枚举成员进行“分组”,以便我可以获得谓词函数并在匹配语句中使用该谓词? 假设我有这个枚举: 枚举数{ 一, ...

回答 2 投票 0

Rust 组枚举成员,但保持匹配详尽性检查

在 Rust 中,有没有一种方法可以对枚举成员进行“分组”,以便我可以获得谓词函数并在匹配语句中使用该谓词? 假设我有这个枚举: 枚举数{ 一, ...

回答 1 投票 0

从具有类型限制的数组中提取枚举

这类似于从数组中提取属性值,但我还需要严格数组的类型。 以下面的代码为例: 类型 ElemProp = {id:数字,名称:字符串,quickFormat?:布尔...

回答 1 投票 0

如何在 Google Apps 脚本库中创建枚举?

我看到 Apps 脚本使用了大量由 Google 预定义的枚举(例如 Enum MimeType)。 如何定义我自己的枚举类型,以便它们显示在我自己的库中? 我可以添加一个标准枚举,就像...

回答 1 投票 0

SpringBoot 其余验证不会因错误的枚举输入而失败

我有一个 SpringBoot 休息 POST 端点,在正文中我 POST 一个枚举值。此调用不会因为输入错误的值而失败。我希望其余的调用失败,而不是返回 null 值...

回答 1 投票 0

将枚举值列表添加到查询参数

例如你有这个枚举: 公共枚举 MyEnum { 枚举1, 枚举2, 枚举3, 枚举4 } 您想传递 IEnumerable 作为查询参数吗? 我试过这个: 变种

回答 1 投票 0

未处理的异常类型Exception

这是一个描述我的问题的简化类: 公共类主要{ 枚举测试{ First(method()){ // 未处理的异常类型 Exception // ... }; 测试(

回答 2 投票 0

Java - 通过文本描述从 api 解析枚举

我有一个无法更改的库。 这个lib有一个api方法,它返回像这样的json {OrderStatus=PartiallyFilledCanceled} 而且这个库还有一个枚举 @AllArgsConstructor 公共枚举 OrderStat...

回答 1 投票 0

C++ 中枚举的范围

我对枚举范围感到困惑。 我有这样的代码: 命名空间规则{ 枚举 Control_0 { 东西1, 东西2, 东西3 }; 枚举 Control_1 { 东西100, 东西200, 东西300 }; 常量...

回答 1 投票 0

存储在变量中时如何阻止枚举转换为 int?

我有一个头文件,如下所示: 命名空间 MyEnumNamespace { 枚举类 MyEnum { 一, 二, 三 }; } 类测试类{ 民众: 测试类(); ...

回答 1 投票 0

© www.soinside.com 2019 - 2024. All rights reserved.