Wie erstelle ich einen F # -Provider, der in C # verwendet werden kann?

Wenn ich die F # -Typanbieter aus der Assembly FSharp.Data.TypeProviders 4.3.0.0 verwende, kann ich Typen in einer sehr einfachen F # -Bibliothek erstellen. Ich kann diese Typen dann unabhängig von der Assembly FSharp.Data.TypeProviders verwenden. Das ist ziemlich süß! Hier ist ein Beispiel:

Ich habe ein F # -Bibliotheksprojekt namens TryTypeProviders erstellt. Ich habe dies in die .fs eingefügt:

module TryTypeProviders
type Northwind = Microsoft.FSharp.Data.TypeProviders.ODataService

Ich kann dann die F # -Bibliothek aus einem C # -Projekt verwenden:

public static void Main()
{
    var c = new TryTypeProviders.Northwind();
    foreach (var cust in c.Customers)
        Console.WriteLine("Customer is: " + cust.ContactName);
    Console.ReadKey(true);
}

Ich habe keine funktionierenden Beispiele für das Erstellen eines solchen Typanbieters gefunden. Auf die Typanbieter in FSharpx.TypeProviders kann in C # nicht zugegriffen werden. Ich vermute, dass es sich um gelöschte und nicht generierte Typen handelt. Ich bin immer noch ein bisschen verschwommen, was was ist, aber es isthier definiert als:

Generierte Typen sind echte .NET-Typen, die in die Assembly eingebettet werden, die den Typprovider verwendet (dies sind die Typprovider, die Tools zur Codegenerierung wie sqlmetal verwenden).Gelöschte Typen sind simulierte Typen, die beim Kompilieren des Codes durch einen anderen Typ dargestellt werden.

Die Proben aus demF # 3.0 Sample Pack im MSDN erwähntTutorial arbeiten nicht für mich Sie bauen, aber wenn ich versuche, sie zu benutzen, bekomme ich Fehler.

open Samples.FSharp.RegexTypeProvider<br>type PhoneNumberRegEx = CheckedRegexProvider< @"(?<AreaCode>^\d{3})-(?<PhoneNumber>\d{3}-\d{4}$)">
open Samples.FSharp.MiniCsvProvider<br>type csv = MiniCsvProvider<"a.csv">

Es wurde zuletzt im März 2011 veröffentlicht und spiegelt meines Erachtens noch nicht die endgültige Version der Typanbieter wider, die mit Visual Studio 2012 ausgeliefert wurden.

F # Type Provider sehen aus wie eine großartige Technologie, aber wir brauchen Hilfe beim Aufbau. Jede Hilfe wird geschätzt.

Antworten auf die Frage(1)

Ihre Antwort auf die Frage