创建具有相同实现的多个结构体



我的程序有两个不同的版本概念: aDefinitionVersion和一个InstanceVersion. 它们都是int。为了避免混淆,我决定创建2个特定的结构体,它们只包含一个int字段(DDD值对象)。

我需要在它们两个上实现IEquatable<T>,IComparable<T>,重载操作符,管理序列化等。但是,除了类(和构造函数)的名称之外,它们是完全相同的。

最好的方法是什么?

我是这么想的:

  • 复制/粘贴:最简单,但我必须维护2个文件。
  • 代码生成:可能过度,可读性差。
  • 泛型结构(仅在声明中使用的泛型类型):更难理解这个概念?

有更好的方法吗?如果不是,我应该用哪一个?

我认为这取决于确切的用例。

如果您只有两个变体(并且不期望更多),我可能会选择复制/粘贴选项。这将是最简单的,我希望像版本这样的简单类型很少有变化。只要记住写一些单元测试,这样你就可以确信没有一堆错误被复制。

如果变体只有,大部分相同,我也会选择复制/粘贴。也许您只想对一个变体进行一些转换?也许还有其他一些操作只对一种变体有意义?即使现在没有差异,您也需要考虑实际代表的类型,以及它们将来是否会出现分歧。

如果你有更多的变量,并且所有的都是相同的,我可能会选择泛型结构,可能会有一些约束来限制泛型类型参数。只要确保你添加了合适的注释来解释你的想法。

相关内容

  • 没有找到相关文章

最新更新