c# - 如何并排组织 F# 和 C#

标签 c# f#

<分区>

我正在从事的项目将必须根据明天带来的食物从 C# 迁移到 F# - 换句话说,这两种语言必须在这个项目中共存多年。

我反复面临的问题是我应该如何在解决方案中组织项目以满足这种需求。

我一直将 C# 的片段翻译成 F#,因为它经常缩短开发时间并提高质量。但我最终得到了想要使用 F# 代码的 C# 代码和想要使用 C# 代码的 F# 代码,它们在同一层中,或者在层或模块之间的边界处。我发现自己将代码放在错误的项目中只是为了避免在某个层创建另一个项目。

现在情况还不错,但我担心我会在某个时候把自己逼到墙角,除非我能想出一个模式或结构,或者只是更好地理解问题。

是否对正常的 F# 架构(模式、子结构或上层结构)进行了一些修改以非常适合这种混合解决方案?

是否有已知的模式对解决这一特定挑战特别有帮助?

最佳答案

使用接口(interface)在两种语言之间进行通信。

通常在移植时,f# 是较低级别的 dll,C# 可以像往常一样调用 f#。

现在 f# 调用 c# 在 f# dll 中定义一个接口(interface)(例如 IClibApi),该接口(interface)在 c# 中实现(例如 ConcreteClibApi extends IClibApi)。创建 ConcreteClibApi 的实例并将其传递给 f#。现在 f# 可以通过 IClibApi 调用 c#。

稍后您可以开始移植 ConcreteClibApi :)

关于c# - 如何并排组织 F# 和 C#,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42827889/

相关文章:

c# - 带有字符串数组的 URL.Action?

c# - 在不阻塞的情况下防止一个线程上出现多个 MessageBox

f# - 为什么从 F# 调用 Moq 会抛出异常?

wpf - 如何更改 ContentControl 的内容

c# - 如何使用 Linq 或其他方式从列表中删除匹配项

c# - 为什么这段代码在编译正常时会引发 'does not exist in namespace' 错误?

c# - 使用 WPF 绘制家谱

f# - 为什么我不能通过一个受歧视工会的成员列表来简化这个迭代?

f# - 尝试过滤掉一个序列中不属于另一个序列的值

wpf - 数据绑定(bind) F# View 模型