![](/img/trans.png)
[英]How to pass a discriminated union from C# to a F# function (F# - C# interop)
[英]F# Data CsvProvider use from a C# application Interop
未来的极端noob学习问题:我有一个模块,我想在我的C#(通用)应用程序中使用。 C#应用程序将下载并解压缩包含12个CSV的文件,这些文件将始终采用相同的格式。 所以我所做的是提前下载CSV,并将它们添加到我的解决方案中,以便CsvProvider <“thefile.csv”>中引用的文件将在编译时存在。
namespace ExperimentalFSLibrary
module CsvHelper =
open FSharp.Data
let GetCsvA path =
CsvProvider<"thefileA.csv">.Load(path)
然后从我的c#应用程序中调用它,如下所示:
var ReceivedCsvA = ExperimentalFSLibrary.CsvHelper.GetCsvA
我没有成功从F#库获取数据
还有如何处理十二个不同文件的问题,因为我必须为CsvProvider指定模板文件,我想我必须编写12个不同的函数?
我在SO周围搜索并找到了让我走到这一步的东西,但我已经撞墙了。 任何帮助,包括健全检查将非常感激。
CsvProvider
中的FSharp.Data
是一个擦除类型提供程序。 这意味着在C#中没有可以使用和使用的类型。
许多F#类型的提供程序(例如此类)仅在从F#中使用时才有用。
在这种情况下,您最有可能最好解析CSV数据并通过C#代码中的某些API耗材返回所需的结果。
还有如何处理十二个不同文件的问题,因为我必须为CsvProvider指定模板文件,我想我必须编写12个不同的函数?
通常,每个文件结构需要一个单独的函数,而不是每个文件。 如果12个文件都使用相同的列/标题/等,则单个类型提供程序类型将在每个文件中使用。 提供的静态文件名仅用于确定生成的类型的列结构。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.