1
2
我觉得你应该
换句话说,您需要一个工厂类型,其中包含您需要重写的方法。如您所述,不能重写C中的静态方法。 当然,问题是,如何获得正确的iRowreder实例?这取决于应用程序,但您可以让客户机在启动时或应用程序中的其他定义良好的点对其进行初始化;或者您可以使用 Dependency Injection 注入和配置。 |
2
0
我也碰到了这个问题,没有一个干净的解决方案,真令人沮丧。这里有一个我用过的解决方法,也许你会喜欢。
假设您的层次结构
创建另一个与此层次结构并行的层次结构,但该层次结构基于一个名为
现在可以编写将工厂作为类型参数的方法,例如
|
3
0
我想抽象基类(rowbase)和工厂类可以解决这个问题。您可以使用配置文件或其他东西来标识您感兴趣的派生类的类型。基本上,您使用的是策略模式。 |
4
0
一种可能的策略是使用静态方法,您将通过反射发现这种方法。幸运的是,您只需要编写一次反射代码。
假设您的层次结构是静态的
现在,您可以编写一个实用程序函数来读取任何类型的行:
当然也一样
|