![]() |
1
2
很难不看到调用GetFoos()的代码。。。如果您可以展示更多描述如何调用这个的代码,我们可以建议如何重构它。 听起来解决方案是让你的调用例程也成为一个泛型例程,这样它就可以避免在20个类型之间的“切换”,只需使用一个根据需要指定的泛型类型。然而,这可能不可行,但同样,没有代码,很难知道。。。 也就是说,可以将GetFoos重构得更简单:
编辑:正如Eric Lippert所指出的,上面的代码返回的是T类型的任何类型,但也返回T的子类。尽管这很可能是实际需要的行为,但它与原始代码不同。如果出于某种原因,您不希望这样做,您可以使用:
这将具有与原始代码相同的行为。 |
![]() |
2
0
像这样?
为了摆脱大开关语句,你要么把泛型进一步推高。一、 使包含switch语句的方法接受泛型类型参数,并继续执行,直到无法再继续执行调用链(如果必须的话)。当这变得太困难时,考虑设计模式,比如抽象工厂、工厂、模板方法等等。。。。这取决于调用代码的复杂程度。 |
![]() |
A B · C#Excel自动调整列避免长文本时出错 4 月前 |
![]() |
Megrez7 · C#ToArray转换合并为一行,导致数组元素更改 4 月前 |
![]() |
Aycon · 在工厂方法中释放部分创建的对象的正确方法是什么? 4 月前 |
|
Sei · Avalonia/WPF将路由器传递到控制模板 5 月前 |