我目前正在研究CQRS系统。
它使用命令和事件,这是标准做法。命令和事件只是.NET类,但这些类通常包含许多Id作为属性,这些ID都是Guids。
这在构造类时会导致问题。团队中的某个人会以错误的顺序调用带有参数的构造函数,这有很大的风险。您可以想象这个简单的问题将如何破坏,即OrderId分配给CustomerId,反之亦然。
所以我正在寻找如何解决这个问题的想法。
我自己也有一些想法。
总而言之,我不会出售任何一个想法,并且想要更简单的东西或者现成的解决方案?
答案 0 :(得分:1)
每个id的单独类型是很好的解决方案,但我也不喜欢它。
单元测试方法调用是非常难的问题。一致的命名总是好的。
在我看来,命令/事件中的参数太多,首先表明出现问题。也许命令负责太多事情或某些参数可以通过基础设施(如当前用户身份)传递。
编辑: 如果你可以确保没有订单和客户(例如)具有相同的Id(我认为使用GUID这是安全的假设)你可以验证两者都存在,如果有人在某处混合这两个值,那么总会有运行时出错,因此很容易发现错误。
答案 1 :(得分:0)
一种想法是使用类型标识符为GUID(因为它们是字符串)添加前缀。所以,伪GUID
对于客户ID xxyy
变为cust_xxyy
但是,作为C#强类型,我建议使用类和属性作为正确的方法。