我正在研究的项目必须根据明天带来食物的方式从C#迁移到F# - 换句话说,这两种语言在未来几年内必须在这个项目中并存。 / p>
我反复面对的问题是如何在解决方案中组织项目以满足这一需求。
我一直将C#中的碎片翻译成F#,因为它经常缩短开发时间并提高质量。但我最终得到了想要使用F#代码的C#代码,以及想要在同一层中或在层或模块之间的边界使用C#代码的F#代码。我发现自己将代码放在错误的项目中只是为了避免在某个层中创建另一个项目。
现在的情况还不错,但我担心我会在某个时刻把自己画成一个角落,除非我能想出一个模式或结构,或者只是更好地理解这个问题。
是否对普通的F#架构(模式,子结构或上层结构)进行了一些修改,非常适合这种混合解决方案?
是否存在已知特别有助于解决此特定挑战的模式?
答案 0 :(得分:6)
使用界面在两种语言之间进行通信。
通常在移植时,f#是较低级别的dll,C#可以像往常一样调用f#。
现在f#调用c#定义在c#中实现的f#dll(例如IClibApi)中的接口(例如,ConcreteClibApi扩展IClibApi)。创建ConcreteClibApi的实例并将其传递给f#。现在f#可以调用c#thru IClibApi。
稍后您可以开始移植ConcreteClibApi :)