c# – 比较两个enum *类型*的等价性?
发布时间:2020-12-15 18:16:53 所属栏目:百科 来源:网络整理
导读:在我的应用程序中,我有两个等效的枚举.一个住在DAL,另一个住在服务合同层.它们具有相同的名称(但位于不同的名称空间中),并且应具有相同的成员和值. 我想写一个强制执行此操作的单元测试.到目前为止,我有以下内容: public static class EnumAssert{ public s
在我的应用程序中,我有两个等效的枚举.一个住在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)); } (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |