c# – 比较两个enum *类型*的等价性?

在我的应用程序中,我有两个等效的枚举.一个住在DAL,另一个住在服务合同层.它们具有相同的名称(但位于不同的名称空间中),并且应具有相同的成员和值.

我想写一个强制执行此操作的单元测试.到目前为止,我有以下内容:

public static class EnumAssert
{
    public static void AreEquivalent(Type x,Type y)
    {
        // Enum.GetNames and Enum.GetValues return arrays sorted by value.
        string[] xNames = Enum.GetNames(x);
        string[] yNames = Enum.GetNames(y);

        Assert.AreEqual(xNames.Length,yNames.Length);
        for (int i = 0; i < xNames.Length; i++)
        {
            Assert.AreEqual(xNames[i],yNames[i]);
        }

        // TODO: How to validate that the values match?
    }
}

这适用于比较名称,但如何检查值是否匹配?

(我正在使用NUnit 2.4.6,但我认为这适用于任何单元测试框架)

解决方法

Enum.GetValues
var xValues = Enum.GetValues(x);
var yValues = Enum.GetValues(y);

for (int i = 0; i < xValues.Length; i++)
{
    Assert.AreEqual((int)xValues.GetValue(i),(int)yValues.GetValue(i));
}

相关文章

项目中经常遇到CSV文件的读写需求,其中的难点主要是CSV文件...
简介 本文的初衷是希望帮助那些有其它平台视觉算法开发经验的...
这篇文章主要简单记录一下C#项目的dll文件管理方法,以便后期...
在C#中的使用JSON序列化及反序列化时,推荐使用Json.NET——...
事件总线是对发布-订阅模式的一种实现,是一种集中式事件处理...
通用翻译API的HTTPS 地址为https://fanyi-api.baidu.com/api...