Если я использую поставщиков типов F # из сборки FSharp.Data.TypeProviders 4.3.0.0, я могу создавать типы в очень простой библиотеке F #. Затем я могу использовать эти типы без какой-либо зависимости от сборки FSharp.Data.TypeProviders. Это очень мило! Вот пример:
Я создал проект библиотеки F # под названием TryTypeProviders. Я помещал это в .fs:
module TryTypeProviders
type Northwind = Microsoft.FSharp.Data.TypeProviders.ODataService
Затем я могу использовать библиотеку F # из проекта С#:
public static void Main()
{
var c = new TryTypeProviders.Northwind();
foreach (var cust in c.Customers)
Console.WriteLine("Customer is: " + cust.ContactName);
Console.ReadKey(true);
}
Мне не удалось найти какие-либо рабочие примеры создания такого типа, как это. Поставщики типов в FSharpx.TypeProviders недоступны из С#. Я предполагаю, что они стирают типы и не сгенерированные типы. Я все еще немного нечеткий, на котором есть, но он определен здесь как:
- Сгенерированные типы - это реальные типы .NET, которые внедряются в сборку, которая использует поставщика типов (это то, что поставщики типов, которые используют инструменты генерации кода, такие как sqlmetal)
- Стираемые типы - это моделируемые типы, которые представляются другим типом при компиляции кода.
Образцы из F # 3.0 Sample Pack, упомянутые в MSDN tutorial не работают для меня. Они строят, но когда я пытаюсь их использовать, я получаю ошибки.
open Samples.FSharp.RegexTypeProvider
type PhoneNumberRegEx = CheckedRegexProvider< @"(?<AreaCode>^\d{3})-(?<PhoneNumber>\d{3}-\d{4}$)">
open Samples.FSharp.MiniCsvProvider
type csv = MiniCsvProvider<"a.csv">
Последний выпуск был выпущен в марте 2011 года, и я предполагаю, что они еще не отражают окончательную версию поставщиков типов, поставляемых с Visual Studio 2012.
F # Тип Провайдеры выглядят как отличная технология, но нам нужна помощь в их создании. Любая помощь приветствуется.