0

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

在工厂中,我有委托定义:

public delegate GridColumnBase ColumnFactoryMethod();

我希望每个继承自GridColumnBase的类型都实现一个静态CreateInstance()方法。我不能成为CreateInstancestatic abstract成员GridColumnBase,那么如何强制每个类都实现此方法?

编辑:再想一想,我得出的结论CreateInstance()不是继承类的特征GridColumnBase,而是希望包含在工厂中的类的特征。也许我不需要在基类级别强制执行此操作。也许我需要把它留给实现类来决定它希望如何参与工厂流程,即将它希望委托的任何功能传递给工厂。除了我之外,这对任何人都有意义吗?:)

4

2 回答 2

0

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

于 2012-12-09T17:45:23.820 回答
0

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

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

于 2012-12-10T08:38:04.773 回答