Tim*_*ger 5 c# vb.net extension-methods f#
解决:IntelliSense只是没有显示扩展!
假设我们在F#中获得了以下扩展方法:
[<Extension>]
module Extension =
[<Extension>]
let Increment(value : System.Int32) = value + 1
Run Code Online (Sandbox Code Playgroud)
在C#中,我可以这样称呼它:
x.Increment(); //Result x=1
Run Code Online (Sandbox Code Playgroud)
但是等效的VB代码返回错误,它没有找到类型整数的扩展方法:
x.Increment() 'No method called "Increment()" for type Int32
Run Code Online (Sandbox Code Playgroud)
虽然可以通过标准方式调用方法:
Increment(x) 'Works
Run Code Online (Sandbox Code Playgroud)
那么在调用F#代码时处理VB和C#之间的区别在哪里,为什么VB环境不能解析扩展方法?
如果您构建常规 F# 库项目
namespace A
open System.Runtime.CompilerServices
[<Extension>]
module Extension =
[<Extension>]
let Increment(value : System.Int32) = value + 1
Run Code Online (Sandbox Code Playgroud)
然后从VB项目中引用这个库
Imports A.Extension
Module Module1
Sub Main()
Console.WriteLine((1).Increment())
End Sub
End Module
Run Code Online (Sandbox Code Playgroud)
然后 VB 按预期处理 F# 扩展方法<Extension>Public Function Increment() As Integer并正常工作,并给出2输出。
干净的实验并不表明 F# 定义的扩展方法有任何特定于 VB 的特性。
| 归档时间: |
|
| 查看次数: |
237 次 |
| 最近记录: |