C# 无法在VB.Net中调用F#扩展名
已解决:IntelliSense不显示扩展名强> 假设我们在F#中得到了以下扩展方法: 但是与此等效的VB代码返回一个错误,它找不到integer类型的扩展方法:C# 无法在VB.Net中调用F#扩展名,c#,vb.net,f#,extension-methods,C#,Vb.net,F#,Extension Methods,已解决:IntelliSense不显示扩展名 假设我们在F#中得到了以下扩展方法: 但是与此等效的VB代码返回一个错误,它找不到integer类型的扩展方法: x.Increment() 'No method called "Increment()" for type Int32 虽然可以通过标准方式调用该方法: Increment(x) 'Works 那么,在调用F代码时处理VB和C的区别在哪里呢?为什么VB环境不能解决扩展方法呢?如果您构建一个常规的F库项目 namespace A op
x.Increment() 'No method called "Increment()" for type Int32
虽然可以通过标准方式调用该方法:
Increment(x) 'Works
那么,在调用F代码时处理VB和C的区别在哪里呢?为什么VB环境不能解决扩展方法呢?如果您构建一个常规的F库项目
namespace A
open System.Runtime.CompilerServices
[<Extension>]
module Extension =
[<Extension>]
let Increment(value : System.Int32) = value + 1
然后VB将F#extension方法按预期公共函数Increment()视为整数
,并正常工作,输出为2
一个干净的实验并不表明F#定义的扩展方法有任何特定于VB的特性如何声明
x
(在VB端)?我尝试过:Dim x作为整数/Int32或Dim x=0I,这三种方法都不适用于meDo您是否在范围内有适当的导入
声明?这可能对我很有用:这确实有效,但出于某种原因,intellisense没有显示增量函数。。。也许正是因为这个原因,我在调试这个时生活很艰难。谢谢:)@TimKrüger是的,ReSharper也有一些问题:
Increment(x) 'Works
namespace A
open System.Runtime.CompilerServices
[<Extension>]
module Extension =
[<Extension>]
let Increment(value : System.Int32) = value + 1
Imports A.Extension
Module Module1
Sub Main()
Console.WriteLine((1).Increment())
End Sub
End Module