我正在创建一个工厂,它使用委托在每个注册类型上调用静态方法,以便创建该类型的实例。
在工厂里我有代表定义:
public delegate GridColumnBase ColumnFactoryMethod();
我想从GridColumnBase
继承的每种类型实现静态CreateInstance()
方法。我无法让CreateInstance
成为static abstract
的{{1}}成员,那么如何强制每个类实现此方法呢?
编辑:再多想一想,我得出的结论是GridColumnBase
不是CreateInstance()
类的一个特征,而是一个想要的类的特征被列入工厂。也许我不需要在基类级别强制执行此操作。也许我需要把它留给实施班来决定它如何参与工厂流程,即将它所代表的任何功能传递给工厂。
除了我之外,这对任何人都有意义吗? :)
答案 0 :(得分:0)
您可以创建另一个接口,每个类实现该接口以强制使用静态工厂方法。每种类型是使用相同或类似的工厂方法吗?
答案 1 :(得分:0)
我最终选择了巧妙地使用反射。为了给予信用到期的信用,我根据自己的需要修改了此解决方案http://www.matlus.com/high-performance-class-factory/。
我认为这是一个很好的优雅解决方案,并且比较我们的分析器的结果,它不会降低性能。