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     
已邀请:
枚举具有与
TextArea
Bool
Choices
)相同的基础值的重复成员。尽管解析应该成功,但是未定义所得枚举实例上的
ToString
的值,并且可能不等于断言所期望的\“ TextArea \”。 来自
Enum.ToString
文档:   如果有多个枚举成员   相同的基础价值   尝试检索字符串   枚举的表示   成员的名称基于其基础   值,您的代码不应   关于哪个名字的假设   方法将返回。 编辑: 为了响应您的编辑,请尝试以下断言:
var MaxLength = EnumHelper.ToEnumSafe<anothername>(\"TextArea\");
Assert.AreEqual(anotherName.TextArea, MaxLength);
或者,如果您希望比较基础类型:
Assert.AreEqual((int)anotherName.TextArea, (int)MaxLength);
如果未明确指定枚举成员的值,您似乎会觉得该枚举成员未与基础值关联。不是这种情况;枚举的所有成员都与基础值相关联。 “隐式”关联的规则由(根据语言规范)给出:   •如果枚举成员是第一个枚举   以枚举类型声明的成员,其   关联值为零。      • 除此以外,   枚举的关联值   成员是通过增加   文本上的关联价值   枚举成员之前的成员。这个   增加的价值必须在   可以是   由基础类型表示,   否则会发生编译时错误。     

要回复问题请先登录注册