一个比较有趣的问题:某程序在启动之前,需要对三种不同类型的数据的交叉引用(Cross Reference,xref)进行更新,现假设每种xref组件(xref component)都专门负责一种类型数据的交叉引用更新。交叉引用更新程序(XRefUpdator)在被构造的时候,会通过反射列举出当前assembly中的所有components,以便在更新的时候,逐一调用这些components的相应方法,完成对所有数据的更新。
很明显,为了强化类型和扩展方便,我们会定义一个xref component的泛型类,泛型类型就是交叉引用数据(XRefData)。由此,出现如下定义:
?
| 1234567891011121314 | public |
好了,现在考察XRefUpdator的定义。根据上面的设计思路,XRefUpdator需要包含一个xref component的列表,以便在需要的时候进行遍历从而逐一更新数据:
?
| 1234 | public |
OK,到这里就傻眼了,上面的省略号部分不知道该怎么写,到底是XRefComponent
如何解决这样的问题?其实方法很简单,就是引入接口。废话不说了,看完下面的代码后,您就会豁然开朗:
?
public |
到这里,我想您应该觉得事情已经结束了。事实上并非如此。如果XRefComponent



