2013-06-17 7 views
5

Gelöst: IntelliSense zeigt die Extension gerade nicht an!F # Erweiterung in VB.Net konnte nicht aufgerufen werden

Lets sagen, dass wir die folgende Erweiterung Methode in F # bekam:

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

In C# ich es wie auf diese Weise nennen kann:

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

Aber das Äquivalent VB-Code dies einen Fehler zurückgibt , es findet nicht die Erweiterungsmethode für den Typ Integer:

While es ist möglich, das Verfahren durch die Standardmethode zu nennen:

Increment(x) 'Works 

Also, wo ist der Unterschied zwischen Handhabung VB und C# auf F # Code aufrufen, warum ist nicht die VB-Umgebung können die Erweiterungsmethoden lösen?

+0

Wie haben Sie 'x' (auf der VB-Seite) deklariert? –

+0

Ich habe versucht: Dim x As Integer/Int32 oder nur Dim x = 0I, alle drei Möglichkeiten funktionierte nicht für mich –

+0

Haben Sie die richtige 'Imports' Erklärung im Bereich? –

Antwort

4

Wenn Sie bauen ein regelmäßiges F # -Bibliothek Projekt

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

und dann

zu dieser Bibliothek von VB-Projekt beziehen
Imports A.Extension 
Module Module1 
    Sub Main() 
     Console.WriteLine((1).Increment()) 
    End Sub 
End Module 

dann Fis-Extension-Methode wie erwartet <Extension>Public Function Increment() As Integer VB behandelt und funktioniert einwandfrei, so dass 2 als Ausgabe.

Ein sauberes Experiment zeigt keine VB-spezifische Idiosynkrasie zu F # -definierten Erweiterungsmethoden an.

+0

Das funktioniert tatsächlich, aber aus irgendeinem Grund zeigt das Intellisense nicht die Increment-Funktion ... Vielleicht war das der Grund, der mir das Leben während des Debuggens schwer gemacht hat. Danke :) –

+0

@ TimKrüger yeah, ReSharper hat auch Probleme um diese: http://youtrack.jetbrains.com/issue/RSRP-288188 http://youtrack.jetbrains.com/issue/RSRP-328715 –

Verwandte Themen