F# 类型提供程序可以合并到 C# 中吗

2024-03-30

很酷的新 F# 3.0 功能类型提供程序可用于弥合 F# 数据类型或类与 XML 或 WSDL 等数据源结构之间的不匹配。然而,这种不匹配对于 C# 等其他 .NET 语言来说也是一个挑战。

我想在 C# 代码中使用 F# 3.0 提供程序。如果可以的话,我该怎么做?此外,如果我们不能,C# 实现需要什么才能使用它们?


我认为@kvb 很好地概述了一些技术困难。我同意类型推断将会有问题 - 您基本上只能在本地使用提供程序生成的类型,类似于匿名类型。我认为 C# 可能在 Roslyn 中提供类似的东西,但我怀疑它会像 F# 中那样优雅、平滑地集成(其中类型提供程序实际上是语言特征不仅仅是tool).

回答你的两个具体问题:

[如何]在 C# 代码中使用 F# 3.0 提供程序?

F# 类型提供程序实际上只能由 F# 编译器理解,因此您需要从 F# 使用它们。为了生成的类型提供程序(SQL、实体、WSDL、配置文件),您可以从 F# 引用提供程序并使用 C# 项目生成的类型。

For erasing类型提供程序您将无法执行此操作,因为类型并不真正存在,只有 F# 可以看到它们。因此,最好的选择是用 F# 编写处理代码,并将结果作为记录集合或其他易于从 C# 使用的类型返回。

C# 实现需要什么才能使用它们?

当然,我可以只是说“C# 必须支持类型提供程序!”,但这里还有一些更多的想法。类型提供程序只是 .NET 程序集,它们不使用任何特定于 F# 的类型。这ITypeProvider界面 http://msdn.microsoft.com/en-us/library/hh323952.aspx可以被包括 C# 在内的任何 .NET 语言使用,因此如果 C# 设计者愿意,他们可以重用已经为 F# 构建的所有优秀提供程序。

因此,将此建议提交给C# 用户声音 https://visualstudio.uservoice.com/forums/121579-visual-studio/category/30931-languages-c-或者在其他地方提倡它(或者说服 Mono 团队实现这个!),也许它会被添加到 C# 中(vNext + 1 + ...)。目前,您只能获得 F# 中的所有好处。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

F# 类型提供程序可以合并到 C# 中吗 的相关文章

  • 使用 C# 将多个音频样本混合到单个文件中

    Closed 此问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 我正在寻找一个能够创建音频文件 mp3 或 wav 的库 NAudio http www codeple
  • 在没有 epsilon 的情况下可以将浮点数与 0.0 进行比较吗?

    我知道 要比较两个浮点值 需要使用一些 epsilon 精度 因为它们并不精确 但是 我想知道是否存在边缘情况 我不需要那个 epsilon 特别是 我想知道这样做是否总是安全的 double foo double x if x lt 0
  • C# 无法捕获 SerializationException

    我的程序在加载序列化文件的部分遇到问题 如果文件无法反序列化 我希望很好地失败 但由于某种原因 我的程序将中断而不是进入 catch 子句 这是我的代码 using FileStream fs new FileStream openFile
  • 组合框下拉位置

    我有一个最大化的表单 其中包含 500px 的组合框控件 停靠在右上角 Width 尝试打开组合框后 列表的一半超出了屏幕 如何强制列表显示在表单中 棘手的问题 我找不到解决这个问题的好办法 只是一个解决方法 添加一个新类并粘贴如下所示的代
  • 应用程序处于中断模式。您的应用程序已进入中断状态,

    我发现自己遇到了同样的问题here https stackoverflow com questions 36204009 disable break mode page in vs2015 我在 dll 中使用 Windows 窗体 这是针
  • 我在使用 ado.net 时收到错误 Argument 2 may not be pass with ref keywords

    int t 0 cmd Parameters AddWithValue Res ref t 我在第二行收到错误 参数 2 不能与 ref 关键字一起传递 您只能通过引用传递参数ref if the 范围 is a ref参数也是如此 Add
  • 如何从外语线程调用Python函数(C++)

    我正在开发一个程序 使用 DirectShow 来抓取音频数据 媒体文件 DirectShow 使用线程将音频数据传递给回调 我的程序中的函数 然后我让该回调函数调用另一个函数 Python 中的函数 我使用 Boost Python 来包
  • 配置:错误:无法运行C编译的程序

    我正在尝试使用 Debian Wheezy 操作系统在我的 Raspberry Pi 上安装不同的软件 当我运行尝试配置软件时 我尝试安装我得到此输出 checking for C compiler default output file
  • 您对“大规模 C++ 软件设计”的看法 [关闭]

    Closed 这个问题是基于意见的 help closed questions 目前不接受答案 正在阅读亚马逊评论 https rads stackoverflow com amzn click com 0201633620 and ACC
  • 使用数据绑定,如何将包含表情符号的文本绑定到标签并使其正确显示?

    我正在编写一个应用程序来连接 WordPress BuddyPress API 该应用程序将允许用户通过 API 相互发送消息 当这些消息包含表情符号时 我很难正确显示它们 以下是 API 返回的消息文本的简短示例 Hi x1f642 ho
  • valgrind 在 Raspberry Pi 上返回未处理的指令

    我最近一直在尝试在运行 Debian GNU Linux7 0 喘息 的树莓派 型号 b 上使用 valgrind 来调试分段错误 每次我在编译的 C 程序上运行 valgrind 时 都会得到类似以下内容的信息 disInstr arm
  • Gremlin.net 文本包含等效项

    我正在使用 Gremlin net 库连接到 janus 图形服务器 我使用 cassandra 和弹性搜索进行数据存储和索引 在我使用的 gremlin 语言和 gremlin 控制台中文本包含在属性的文本中进行搜索 我正在使用混合索引
  • 如何检测应用程序正在运行的 .NET 版本?

    我尝试使用Environment Version ToString 确定目标计算机上正在使用什么 NET 框架 但安装了 4 0 版本时 它说我正在使用 NET 2 0 如何检测目标计算机上正在运行的 NET Framework 版本 En
  • 如何将System.Windows dll添加到Visual Studio 2010 Express?

    我正在开发一个小型应用程序C and VS2010 as IDE with NET框架4 我想用CaptureSource类以便从笔记本电脑的网络摄像头捕获视频 为此我需要添加一个命名空间System Windows DependencyO
  • Xcode 7 调试器不会中断内联标头函数

    过去五年我一直在各种 C 项目中使用 Xcode 没有出现这个问题 今天 我打开了一个较旧的项目 大约 2 年前 并尝试通过在该函数中放置一个活动断点来调试头文件中的内联函数 由于某种原因 调试器不会中断此代码 但是 如果我在调用该函数的
  • 使用多态对象数组进行 JSON 反序列化

    我在涉及多态对象数组的 JSON 反序列化方面遇到问题 我已经尝试过记录的序列化解决方案here https stackoverflow com questions 5186973 json serialization of array w
  • 具有四个 && 的 LINQ Where 子句

    我正在尝试在Where 子句中创建一个带有4 个参数的LINQ 查询 这是一个 Windows 8 应用程序项目 我正在使用 SQLite 数据库 SQLite 实现 https github com praeclarum sqlite n
  • 为什么在构造函数中设置字段是(或不是)线程安全的?

    假设您有一个像这样的简单类 class MyClass private readonly int a private int b public MyClass int a int b this a a this b b public int
  • 实体框架代码首次日期字段创建

    我正在使用实体框架代码优先方法来创建我的数据库表 下面的代码 创建一个DATETIME数据库中的列 但我想创建一个DATE柱子 DataType DataType Date DisplayFormatAttribute ApplyForma
  • 如何使用 C# 为 azure devops 变量赋值

    我有 selenium C 测试脚本 可以从浏览器获取令牌 我有两个 azure devops 任务 一个用于执行 selenium 测试 另一个用于执行 API 测试 我想将 selenium 测试获取的令牌传递给 API 测试执行任务

随机推荐

  • 有没有办法将 Unicode 文本存储在配置为“US7ASCII”的 Oracle 数据库中

    我们最近遇到了一个障碍 即商标符号从一个 Oracle 数据库复制到另一个数据库 但它看起来像 我们已将问题跟踪到配置了 US7ASCII 字符集的目标数据库 不幸的是 我们目前无法重建数据库来解决这个问题 有没有一种方法可以定义特定列来使
  • C++ 3sum 复杂度

    我试图解决cpp中的3和问题 给定一个由 n 个整数组成的数组 S S 中是否存在满足 a b c 0 的元素 a b c 查找数组中所有总和为零的唯一三元组 class Solution public vector
  • WxPython:符合“确定”/“取消”按钮顺序的跨平台方式

    我正在学习 wxPython 所以大多数库和类对我来说都是新的 我正在创建一个首选项对话框类 但不知道确保 确定 取消 或 保存 关闭 按钮在平台上的顺序正确的最佳方法 该程序旨在在 GNOME 和 Windows 上运行 因此我想确保每个
  • rdi 寄存器用于无参数函数的目的

    考虑这个简单的函数 struct Foo int a int b int c int d int e int f Foo foo Foo f f a 1 f b 2 f c 3 f d 4 f e 5 f f 6 return f 它生成以
  • 无法为 Linux Redhat 服务器上安装的 R studio 安装 Devtools 包

    我无法安装devtools在 Redhat Linux 服务器上的 R Studio 中打包 这些错误消息出现 ERROR configuration failed for package RCurl removing home xx R
  • Stripe CLI ubutu 安装问题

    我想在 ubuntu 20 04 上安装 Stripe CLI 我按照 Stripe 文档中的步骤安装 从以下位置下载最新的 linux tar gz 文件https github com stripe stripe https githu
  • 如何使用 Jetty 客户端获取基于请求的连接所花费的时间

    我想计算根据要求请求开始和连接建立 TCP 连接建立 之间的时间 我问了这个问题question https stackoverflow com questions 66605208 how to get the time it took
  • 来自同一原始指针的 C++ 多个唯一指针

    考虑下面我的代码 我对唯一指针的理解是 只能使用一个唯一指针来引用一个变量或对象 在我的代码中 我有多个 unique ptr 访问同一变量 这显然不是我所知道的使用智能指针的正确方法 因为指针应该从创建时就拥有完整的所有权 但是 为什么这
  • 在 Android 移动设备上使用 Chrome 调试 Service Worker

    我正在开发一个渐进式 Web 应用程序 为了确保它可以在移动设备上运行 特别是在 Android 版 Chrome 上 因为它有 90 的用户 我正在尝试在 Android 设备上测试 Service Worker 不幸的是 在安卓版 Ch
  • 将芯片/标签移出 MUI 中的自动完成框

    我正在使用MUIAutocomplete组件并试图弄清楚是否可以移动芯片 标签outside输入框的 这可能吗 我更希望芯片列在盒子下方 这样 文本框就可以仅用于用户输入 而不是both显示芯片 标签和用户输入 我尝试过使用其中一个基本演示
  • 使用数据注释传递错误消息字符串

    使用数据注释的错误消息 但在 ErrorMessage 中我想传递变量字符串 但是当我这样做时 它会在构建项目时给出错误 string errorMessage Something happened Remote IsTimeValid A
  • 总是需要绑定套接字吗?

    好吧 我的问题可能看起来像是一个基本问题 但我对网络编程方面很陌生 我想知道 1 是否总是需要绑定套接字才能从中接收消息 我看到一个嗅探器代码 原始套接字 其中直接调用recvfrom以及它调用的另一段代码bind然后是接收 2 AF 和
  • 以编程方式按数据表中的每个列范围对数字列进行颜色格式化

    我在这里打开了一个关于如何在数据表中添加范围栏的线程 以编程方式对数据表中的数字列进行颜色格式 https stackoverflow com questions 54943418 programmatically color format
  • 使用 SyncAdapter 同步联系人,工作

    我目前正在开发一个 android 项目 在该项目中我想将移动联系人同步到服务器 经过大量研究后SyncAdapter并在中创建帐户accountmanager 我自己学会了 但是有两件事我不明白 我在谷歌中搜索了这些内容但无法得到完美的答
  • 从 flutter 中的 future 返回一个列表

    嗨 我是颤振和异步编程的新手 我需要做这样的事情 List
  • 忽略图像中透明部分的鼠标交互并将其分配给下图

    我有两张桌子 其中的图像部分是透明的 我想要 忽略这些部分上的鼠标交互 尤其是单击 并分配 单击下面另一个表中的图像 我希望你理解 因为英语不是我的母语 谢谢 影像图 http w3schools com tags tag map asp应
  • 从存储过程,返回 OUT 参数和 OUT 游标并解析结果 (Oracle)

    问题 是否可以使用 OUT 返回 两者 一个变量和一个光标 来自我下面的代码 我看到了 SqlDB 的类似问题 但经过长时间的搜索后没有找到 OracleDB 的解决方案 在 PLSQL 中 CREATE OR REPLACE PROCED
  • “查看详细信息”缺少表单异常处理程序 VS 2017

    这很容易与以下内容相同 异常助手中缺少 查看详细信息 https stackoverflow com questions 39213820 view details missing from exception assistant 但我在
  • 使用 Xcode 生成器配置特定的 add_custom_command

    我想创建一个自定义命令 使用 Apple 的将所有静态库合并到一个胖静态库中libtool构建期间的命令 我正在使用 Xcode 生成器和 CMake 3 19 1 我的脚本是这样的 set TARGET OUTPUT NAME CMAKE
  • F# 类型提供程序可以合并到 C# 中吗

    很酷的新 F 3 0 功能类型提供程序可用于弥合 F 数据类型或类与 XML 或 WSDL 等数据源结构之间的不匹配 然而 这种不匹配对于 C 等其他 NET 语言来说也是一个挑战 我想在 C 代码中使用 F 3 0 提供程序 如果可以的话