作者热门文章
- c - 在位数组中找到第一个零
- linux - Unix 显示有关匹配两种模式之一的文件的信息
- 正则表达式替换多个文件
- linux - 隐藏来自 xtrace 的命令
我需要创建一个没有 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/
我是一名优秀的程序员,十分优秀!