具有相同成员但不同名称的c#结构体,如何解决
本文关键字:结构体 何解决 解决 成员 | 更新日期: 2023-09-27 18:08:03
我遇到了一个问题,我有两个结构体具有完全相同的成员,但名称不同(明显违反DRY)。这背后的原因是结构体A
是函数的输入,而结构体B
是函数的输出。结构体A
和B
的成员是相同的,但它们代表不同的东西。我怎么解决这个问题呢?
在我的头上,我想到有一个父基类,然后有A
和B
继承它,但留下它是空的。
更具体地说,我正在开发一个简单的搜索和替换工具。第一个函数创建一个SearchResult
列表,每个SearchResult
包含startingIndex
和text
(已搜索的文本可能不同(考虑正则表达式))。一旦创建了这些SearchResult
,我就可以将它们传递给替换函数,该函数遍历SearchResult
列表,然后替换它们。输出是一个ReplaceResult
s的列表-在这个结构体中,它也有startingIndex
和text
(但文本是"被替换后的文本")。
我正在学习c#,想到了这个简单的项目来尝试。
几个选项
-
而不是有
SearchResult
和ReplaceResult
结构体,为什么不有一个单一的结构体,也许称为IndexedTextItem
,你使用两者? -
您可以实现
IIndexedTextItem
接口,并将SearchResult
和ReplaceResult
更改为实现它的类 -
为什么不把它们分开呢?毕竟它们是不同的东西。拥有两个具有相似数据类型但服务于不同目的的结构不一定违反DRY。您可能希望将来扩展其中一个或另一个,例如,您可能需要在
ReplaceResult
结构中添加OriginalText
元素,以支持以后的"撤销"功能。