【问题标题】:Unable to call F# Extension in VB.Net无法在 VB.Net 中调用 F# 扩展
【发布时间】:2013-06-17 16:16:51
【问题描述】:

已解决:IntelliSense 只是不显示扩展程序!

假设我们在 F# 中得到了以下扩展方法:

[<Extension>]
module Extension =
    [<Extension>]
    let Increment(value : System.Int32) = value + 1

在 C# 中我可以这样称呼它:

x.Increment(); //Result x=1

但是与此等效的 VB 代码返回错误,它没有找到整数类型的扩展方法:

x.Increment() 'No method called "Increment()" for type Int32

虽然可以通过标准方式调用该方法:

Increment(x) 'Works

那么调用F#代码处理VB和C#的区别在哪里,为什么VB环境不能解析扩展方法呢?

【问题讨论】:

标签: c# vb.net f# extension-methods


【解决方案1】:

如果你构建一个常规的 F# 库项目

namespace A
open System.Runtime.CompilerServices
[<Extension>]
module Extension =
    [<Extension>]
    let Increment(value : System.Int32) = value + 1

然后从 VB 项目中引用这个库

Imports A.Extension
Module Module1
    Sub Main()
        Console.WriteLine((1).Increment())
    End Sub
End Module

然后 VB 按预期处理 F# 扩展方法 &lt;Extension&gt;Public Function Increment() As Integer 并正常工作,将 2 作为输出。

干净的实验并不表明任何 VB 特定于 F# 定义的扩展方法的特性

【讨论】:

猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-03-22
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多