enums 相关问题

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

测试转换器参数是否为 System.Windows.Visibility 类型

我需要检查转换器参数是否属于 System.Windows.Visibility 类型: 公共对象转换(对象值,类型targetType,对象参数,System.Globalization.CultureInfo文化) { ...

回答 2 投票 0

具有多态性的类的枚举

在下面的枚举继承中,对成员值调用多态方法会产生意外结果。 从枚举导入枚举 类激活: def 激活(自身,值): 打印(&

回答 1 投票 0

Java 中枚举字段的序列化

来自ObjectInputStream的Javadoc: 枚举常量的反序列化与普通可序列化不同 或可外部化的对象。枚举常量的序列化形式 包含唯一...

回答 2 投票 0

如何解决未检查的演员

我正在尝试获取类的 ENUM 字段的 ENUM 值,但按如下方式检索它会引发未经检查的强制转换警告: value = Enum.valueOf((Class) classField.getType(), (String) value...

回答 1 投票 0

如何在不先声明枚举类型的情况下将 varchar 变量转换为枚举?

我正在使用 SELECT 从数据库生成结果集: 从数据集中选择 id 国家名称 其中 -countryname- 存储为 varchar。 我打算将 -countryname- 转换为等效的...

回答 1 投票 0

C# 中不同文件中的单独大枚举列表

我面临着一个大 Enum 文件的可扩展性问题,该文件有超过 1700 条记录。 我必须向此枚举添加更多记录,并且我正在考虑创建一个新的枚举文件以避免添加更多记录

回答 1 投票 0

匹配部分移动的枚举 Rust

我遇到了一个问题,我通过根据枚举的匹配来移动值来消耗枚举的内容。完成此操作后,我想返回该计算值以及 ano...

回答 1 投票 0

Flag 枚举中所有值的表示

我想在我的 python Flags 枚举中有一个“ALL”标志 myenum.EVERY_MEMBER & myenum.ALL == myenum.EVERY_MEMBER 确实如此。我目前有: 从枚举导入标志,自动 班级

回答 5 投票 0

SwiftUI @Observable 类 ViewModel 在设置枚举变量时被初始化两次,但不是类 ViewModel: ObservableObject

在设置枚举变量时,为我的 @Observable 类 ViewModel 使用新的观察框架时,我的 ViewModel 被初始化两次时出现问题。尝试将其改回...

回答 1 投票 0

在可视化脚本中从 Enum 获取 int 值 (Unity)

我正在 Unity 中使用可视化脚本创建一个游戏。 我在 C# 脚本中创建了一个枚举,因为我读到我们无法在可视化脚本中创建枚举(如果有人知道如何做到这一点,我将非常感激...

回答 1 投票 0

将整数解释为 Python 枚举标志

我在将整数解释为枚举标志时问了这个问题,但没有像我应该的那样清楚地说明挑战。我正在寻找如何获取纯整数,而不是类基的实例......

回答 2 投票 0

Mongoose - 枚举字符串数组

我有一个架构,其属性具有预定义的字符串数组类型。 这就是我尝试做的: 兴趣:{ 类型:[字符串], 枚举:['足球'、'篮球'、'阅读...

回答 6 投票 0

检查值是否在枚举内的惯用方法

我想检查某个枚举的值集中是否存在某个字符串值。这是我所做的: 从枚举导入枚举 类颜色(str,枚举): 红色=“红色” 绿色=“绿色”...

回答 4 投票 0

我可以在 Java 枚举上使用构建器模式吗

我正在重写一些代码,并且我已经决定了重新创建类的方法,因为有固定数量的工作表,我将它们创建为枚举。这是基于构建器的可读性的决定

回答 3 投票 0

C#:检查一组枚举值的最佳方法?

假设你有 枚举 MyEnum {A = 0,B = 1,C = 2,D = 4,E = 8,F = 16}; 在某些时候,您有一个函数将检查 MyEnum 的实例,如果它是 C、D 或 F,则返回 true bool IsCDF(M...

回答 8 投票 0

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

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

回答 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

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