c#中的枚举助手未给出预期的结果
|
基本上,由于某种原因,我没有收到正确的枚举类型,也无法弄清楚为什么,我的代码在下面,非常感谢任何指针/解释...
编辑:类型->更改为另一个名称(感谢大家的注意)
帮手:
public static T Convert<T>(this string str)
{
return (T)Enum.Parse(typeof(T), str, true);
}
枚举值:
public enum anothername
{
SmallText = 100,
Number = 15,
TextArea = 0,
Bool = 0,
Choices = 0,
}
我的测试:
[Test]
public void EnumGetStringFromEnumType()
{
//arrange
var MaxLength = EnumHelper.Convert<anothername>(\"TextArea\").ToString();
//act
//assert
Assert.AreEqual(\"TextArea\", MaxLength);
}
编辑:
谢谢,删除int值解决了!
但是...如果我实际上想对某些枚举类型而不是其他枚举类型说值
public enum anothername
{
SmallText = 100,
Number = 15,
TextArea,
Bool,
Choices,
}
测试2:
[Test]
public void EnumGetIntValueOrStringFromEnumType()
{
//arrange
var MaxLength = EnumHelper.ToEnumSafe<anothername>(\"TextArea\");
//act
//assert
Assert.AreEqual(null, (int)MaxLength);
}
当我尝试检索int值时遇到完全相同的问题,但得到的结果不正确...
结果= 16
没有找到相关结果
已邀请:
1 个回复
梆晨灸碾
(
和
)相同的基础值的重复成员。尽管解析应该成功,但是未定义所得枚举实例上的
的值,并且可能不等于断言所期望的\“ TextArea \”。 来自
文档: 如果有多个枚举成员 相同的基础价值 尝试检索字符串 枚举的表示 成员的名称基于其基础 值,您的代码不应 关于哪个名字的假设 方法将返回。 编辑: 为了响应您的编辑,请尝试以下断言:
或者,如果您希望比较基础类型:
如果未明确指定枚举成员的值,您似乎会觉得该枚举成员未与基础值关联。不是这种情况;枚举的所有成员都与基础值相关联。 “隐式”关联的规则由(根据语言规范)给出: •如果枚举成员是第一个枚举 以枚举类型声明的成员,其 关联值为零。 • 除此以外, 枚举的关联值 成员是通过增加 文本上的关联价值 枚举成员之前的成员。这个 增加的价值必须在 可以是 由基础类型表示, 否则会发生编译时错误。