【发布时间】:2023-03-17 05:41:01
【问题描述】:
我想完全替换一个我没有写的类的方法。我很难找到答案,因为我不确定它叫什么,因为我不认为它在技术上被认为是压倒一切的。
例如:
假设我有一些代码在很多地方广泛使用 List 对象。我经常对这些对象调用 Sort 方法,但现在我想更改 Sort 方法的实现以执行一些额外的操作。
我可以创建一个新类 MyList,它继承自 List 并覆盖 Sort 方法,但这意味着我必须检查所有代码并确保将所有 List 对象更改为 MyList。这可能会产生一些问题,因为我到处都在使用 List 并且很容易错过一些对象
这不是字面意思,但希望这个例子有意义。我知道我正在尝试做的可能被认为是糟糕的设计,但我仍然想知道这是否可能。
【问题讨论】:
-
它被称为影子方法,但我很确定它在这里对你没有帮助:stackoverflow.com/questions/673779/what-is-shadowing
-
您可以创建一个扩展方法,但您不能覆盖现有方法,因此您仍然需要在使用它的任何地方更改调用。
-
你可以在列表中的对象内部实现排序吗?并让他们帮助您获得正确的排序顺序,而无需替换
List<T>? -
在这种情况下,您可能会发现以下内容很有用:stackoverflow.com/questions/3021797/…
-
如果不进行子类化,您可以编写扩展方法来有效地将
SortAnd___方法添加到List类。但是一个名为Sort的方法应该排序并且什么都不做。
标签: c# polymorphism shadow