C# 结构相同但名称不同,如何解决?

C# Struct with same members but different names, how to solve?

我 运行 遇到了一个问题,我有两个具有完全相同成员但名称不同的结构(明显违反 DRY)。这背后的原因是 struct A 是函数的输入,而 struct B 是函数的输出。 struct AB 的成员完全相同,但它们代表不同的东西。我该如何解决?

在我的头顶上,我想到了一个父基class,然后让AB继承它,但留空。


更具体地说,我正在开发一个简单的搜索和替换工具。第一个函数创建一个 SearchResult 的列表,每个 SearchResult 包含 startingIndextext (已搜索的文本,可能与另一个不同(想想正则表达式)).一旦创建了这些 SearchResult,我就可以将它们传递给一个替换函数,该函数遍历 SearchResult 列表,然后替换它们。输出是一个 ReplaceResult 的列表——在这个结构中,它还有 startingIndextext(但文本是 "the text after being replaced")。

我正在学习 C# 并想到了这个简单的项目来尝试。

情侣选项

  1. 与其使用 SearchResultReplaceResult 结构,为什么不使用一个结构,也许称为 IndexedTextItem 用于两者?

  2. 你可以实现一个IIndexedTextItem接口,把SearchResultReplaceResult改成类来实现它。

  3. 为什么不把它们分开呢?它们毕竟是不同的东西。拥有两个数据类型相似但用途不同的结构不一定违反 DRY。您可能希望在将来扩展一个或另一个,例如也许您可能需要在 ReplaceResult 结构中添加一个 OriginalText 元素,以便稍后支持 "undo" 功能。