gpt4 book ai didi

c# - 如何从类型变量中获取枚举的默认值

转载 作者:行者123 更新时间:2023-11-30 15:16:04 25 4
gpt4 key购买 nike

给定一个对象(在设计时未知),我在其属性上循环执行一些过程。在每个属性上,我必须检查它的值是否与默认值不同。

foreach(var p in propertyInfos)
{
if (something) { ... }
else if (p.PropertyType.IsEnum)
{
object oDefault = GetDefaultValueOfThisPropertyByWhateverMethod();
if (oDefault == null)
oDefault = default(p.PropertyType); // not valid
var vValue = p.GetValue(myObject);

if (!oDefault.Equals(vValue))
// Do something enum specific when value is not the default one.
}
}

知道可能存在不包含值为 0 的项目的枚举,我怎么能做到这一点?

最佳答案

enum 的默认值为 0... 即使没有为 0 定义任何值。最后你总是可以为任何 (EnumType)123 枚举enum 不检查/限制它们的“有效”值。只给一些特定的值一些标签。

请注意,我之前所说的 0 是一个“类型”值...所以它是 (EnumType)0,而不是 (int)0...您可以:

object oDefault = Enum.ToObject(p.PropertyType, 0);

甚至可以使用非int 类型的枚举,例如:

enum MyEnum : long
{
}

显然你甚至可以:

object oDefault = Activator.CreateInstance(p.PropertyType);

因为 new SomeEnumType() 是 0。

关于c# - 如何从类型变量中获取枚举的默认值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50604295/

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