解决方法
我已经听过这样的请求,所以似乎有更多人愿意这样做.但是,如前所述,这是不可能的.您可以使用ILMerge合并多个程序集(具有不同的类),但不可能用不同的语言编写类的不同部分.您可以得到的唯一答案是您需要以不同方式构建代码.有几种选择:
>声明一个F#模块,其中的函数可以控制您想要在F#中执行的部分
>使用F#中的成员声明类型,然后使用C#中的这些类
>在C#(或F#)中声明一个基类,并创建一个继承的类,用其他语言添加其余的功能.
在任何情况下,您都需要以某种方式解耦功能(这是技术要求,我相信它也有助于使您的代码更具可读性).
要演示为什么跨多个程序集的部分类无法工作:
// C# part partial class Foo { private int csharpField; int Bar() { return FSharpMethod(); } } // F# part type Foo = member x.FSharpMethod() = x.csharpField
在这个例子中,C#无法编译代码,因为它不知道FSharpMethod是否存在以及它的类型是什么. F#编译器也无法编译代码,因为它不知道csharpField的类型是什么(以及它是否存在).
当然,这只是一个技术问题的一个例子,但是会有很多这样的问题 – 如果你想支持这个问题,很容易想象会出现许多其他问题(似乎这两个编译器需要注意另一个人的内部情况).
原文地址:https://www.jb51.cc/csharp/100346.html
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。