gpt4 book ai didi

c# - 创建一个没有 0 值的 C# 枚举实例

转载 作者:太空狗 更新时间:2023-10-30 00:06:14 26 4
gpt4 key购买 nike

我需要创建一个没有 0 值的 Enum 类的实例。使用 0 值,下一个代码可以正常工作:

ObjectFactory.CreateInstance("Edu3.DTOModel.Schedule.ScheduleStateEnum");

枚举:

namespace Edu3.DTOModel.Schedule
{
public enum ScheduleStateEnum
{
DUMMY = 0,
Draft = 1,
Published = 2,
Archived = 3
}
}

如果我注释掉 DUMMY,创建实例将不再有效。

最佳答案

I need to create an instance of an Enum class that hasn't got a 0 value.

假设这样一个枚举:

public enum ScheduleStateEnum
{
Draft = 1,
Published = 2,
Archived = 3
}

你可以像这样创建一个实例:

ScheduleStateEnum myState = 0;

如果您无法声明该类型的变量并且您需要以字符串形式访问该类型(如您的示例中所示),请使用 Activator.CreateInstance:

var myState = Activator.CreateInstance(Type.GetType(
"Edu3.DTOModel.Schedule.ScheduleStateEnum"));

当然,这两个选项都会为您提供一个实际具有整数值 0 的实例,即使枚举没有声明一个。如果你想让它默认为你实际声明的值之一,你需要使用反射来找到它,例如:

var myState = Type.GetType("Edu3.DTOModel.Schedule.ScheduleStateEnum")
.GetFields(BindingFlags.Static | BindingFlags.Public)
.First()
.GetValue(null);

对于根本没有定义值的枚举,这将导致崩溃。如果您想防止这种情况,请使用 FirstOrDefault 并检查 null

关于c# - 创建一个没有 0 值的 C# 枚举实例,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4804786/

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