刚刚尝试了一下移值现有CnPack框架,发现问题还是相当多的。
首先,现有代码使用了大量unsafe的诸如指针等操作,例如CnCommon.pas里面很大一部分代码必须根据Delphi.NET的要求进行改造。
其次,有些现有接口如IOTAKeyboardServices极其相关接口不在提供,框架中这部分代码以及相关专家可能得另想办法。
此外,现有架构的结构实在是有些混乱,单元之间的关系太复杂了,很难快速抽出一个最小功能集。也可能是因为我对CnPack架构不是太熟悉的原因吧。
最后,D8的bug实在太多了,平均工作十几分钟那个该死的BDS就要当一次,重起还得好几分钟时间。工作效率极低
总而言之,感觉真要想使用同一份代码,需要对现有架构做很大程度上的重构工作,抽取一个最小功能集,然后再次基础上提取公用代码和可移值专家。另一个方案是现有架构不做改动,再按照.NET的特性重建一个架构,接口上兼容现有架构。只重构可移值的专家,专家级同时支持两套架构。感觉后面一种方案的工作量可能稍微小一点,必尽修改需要移值的专家比起重构整个框架还是少些工作。
建议负责现有架构的人可以具体试试,权衡一下两个方案的利弊。我就不想再做尝试了,呵呵,实在是比较辛苦。还是先写几个简单的例子上来再说吧