强制使用静态方法在工厂中使用

时间:2012-12-09 17:36:13

标签: c# polymorphism

我正在创建一个工厂,它使用委托在每个注册类型上调用静态方法,以便创建该类型的实例。

在工厂里我有代表定义:

public delegate GridColumnBase ColumnFactoryMethod();

我想从GridColumnBase继承的每种类型实现静态CreateInstance()方法。我无法让CreateInstance成为static abstract的{​​{1}}成员,那么如何强制每个类实现此方法呢?

编辑:再多想一想,我得出的结论是GridColumnBase不是CreateInstance()类的一个特征,而是一个想要的类的特征被列入工厂。也许我不需要在基类级别强制执行此操作。也许我需要把它留给实施班来决定它如何参与工厂流程,即将它所代表的任何功能传递给工厂。 除了我之外,这对任何人都有意义吗? :)

2 个答案:

答案 0 :(得分:0)

您可以创建另一个接口,每个类实现该接口以强制使用静态工厂方法。每种类型是使用相同或类似的工厂方法吗?

答案 1 :(得分:0)

我最终选择了巧妙地使用反射。为了给予信用到期的信用,我根据自己的需要修改了此解决方案http://www.matlus.com/high-performance-class-factory/

我认为这是一个很好的优雅解决方案,并且比较我们的分析器的结果,它不会降低性能。