C# 结构相同但名称不同,如何解决?
C# Struct with same members but different names, how to solve?
我 运行 遇到了一个问题,我有两个具有完全相同成员但名称不同的结构(明显违反 DRY)。这背后的原因是 struct A
是函数的输入,而 struct B
是函数的输出。 struct A
和 B
的成员完全相同,但它们代表不同的东西。我该如何解决?
在我的头顶上,我想到了一个父基class,然后让A
和B
继承它,但留空。
更具体地说,我正在开发一个简单的搜索和替换工具。第一个函数创建一个 SearchResult
的列表,每个 SearchResult
包含 startingIndex
和 text
(已搜索的文本,可能与另一个不同(想想正则表达式)).一旦创建了这些 SearchResult
,我就可以将它们传递给一个替换函数,该函数遍历 SearchResult
列表,然后替换它们。输出是一个 ReplaceResult
的列表——在这个结构中,它还有 startingIndex
和 text
(但文本是 "the text after being replaced")。
我正在学习 C# 并想到了这个简单的项目来尝试。
情侣选项
与其使用 SearchResult
和 ReplaceResult
结构,为什么不使用一个结构,也许称为 IndexedTextItem
用于两者?
你可以实现一个IIndexedTextItem
接口,把SearchResult
和ReplaceResult
改成类来实现它。
为什么不把它们分开呢?它们毕竟是不同的东西。拥有两个数据类型相似但用途不同的结构不一定违反 DRY。您可能希望在将来扩展一个或另一个,例如也许您可能需要在 ReplaceResult
结构中添加一个 OriginalText
元素,以便稍后支持 "undo" 功能。
我 运行 遇到了一个问题,我有两个具有完全相同成员但名称不同的结构(明显违反 DRY)。这背后的原因是 struct A
是函数的输入,而 struct B
是函数的输出。 struct A
和 B
的成员完全相同,但它们代表不同的东西。我该如何解决?
在我的头顶上,我想到了一个父基class,然后让A
和B
继承它,但留空。
更具体地说,我正在开发一个简单的搜索和替换工具。第一个函数创建一个 SearchResult
的列表,每个 SearchResult
包含 startingIndex
和 text
(已搜索的文本,可能与另一个不同(想想正则表达式)).一旦创建了这些 SearchResult
,我就可以将它们传递给一个替换函数,该函数遍历 SearchResult
列表,然后替换它们。输出是一个 ReplaceResult
的列表——在这个结构中,它还有 startingIndex
和 text
(但文本是 "the text after being replaced")。
我正在学习 C# 并想到了这个简单的项目来尝试。
情侣选项
与其使用
SearchResult
和ReplaceResult
结构,为什么不使用一个结构,也许称为IndexedTextItem
用于两者?你可以实现一个
IIndexedTextItem
接口,把SearchResult
和ReplaceResult
改成类来实现它。为什么不把它们分开呢?它们毕竟是不同的东西。拥有两个数据类型相似但用途不同的结构不一定违反 DRY。您可能希望在将来扩展一个或另一个,例如也许您可能需要在
ReplaceResult
结构中添加一个OriginalText
元素,以便稍后支持 "undo" 功能。