我的业务对象定义了一个枚举。
此枚举虽然在数据传输对象中定义。
dto枚举不属于业务对象的类型,因为它们不应该彼此了解。
当我从客户端获取此dto并将dto映射到业务对象并将数据插入数据库时,我想断言传递的dto.enum与数据库中插入的枚举值具有相同的值。 / p>
这是我收到的错误消息:
Expected: A
But was: A
实际上它们具有相同的值但是类型不同:dto.enum vs businessobject.enum。
那么你在哪里定义这个枚举然后两个对象都可以,并且两个对象之间没有耦合?
我考虑过在我的业务层和dto AND业务对象使用的枚举定义中添加一个额外的c#类,以便断言可以工作。
你会做什么?
答案 0 :(得分:2)
您应该将枚举放在外部util类中,两个对象都可以通过项目引用访问(模型层最有可能)。然后他们可以使用相同的枚举,你不必尝试施放,转换或耦合(假设枚举是彼此完全相同的重复)。
答案 1 :(得分:1)
如果名称完全相同,您只需执行以下操作:
BusinessEnumType businessEnum = GetBusinessEnum();
DTOEnumType dtoEnum = GetDTOEnum();
Assert.AreEqual(businessEnum.ToString(), dtoEnum.ToString());
也许并不理想,但可以省去你在各处定义的事情。
您也可以编写一个IEqualityComparer
,用于检查某些BusinessEnumType
是否与DTOEnumType
“相同”,但这可能是一个维护问题。