如果我使用程序集FSharp.Data.TypeProviders 4.3.0.0中的F#Type Providers,我可以在一个非常简单的F#库中创建类型.然后,我可以使用这些类型而不依赖于程序集FSharp.Data.TypeProviders.那太可爱了!这是一个例子:
我创建了一个名为TryTypeProviders的F#库项目.我把它放在.fs中:
module TryTypeProviders
type Northwind = Microsoft.FSharp.Data.TypeProviders.ODataServiceRun Code Online (Sandbox Code Playgroud)
然后我就可以使用C#项目中的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);
}Run Code Online (Sandbox Code Playgroud)
我还没有找到任何有关如何创建这样的类型提供程序的工作示例.无法从C#访问FSharpx.TypeProviders中的类型提供程序.我的猜测是它们是擦除类型而不是生成类型.我仍然有点模糊,但是它在这里被定义为:
MSDN 教程中提到的F#3.0示例包中的示例对我不起作用.他们建立,但当我尝试使用它时,我得到错误.
open Samples.FSharp.RegexTypeProvider
type PhoneNumberRegEx = CheckedRegexProvider< @"(?<AreaCode>^\d{3})-(?<PhoneNumber>\d{3}-\d{4}$)">Run Code Online (Sandbox Code Playgroud)
open Samples.FSharp.MiniCsvProvider
type csv = MiniCsvProvider<"a.csv">Run Code Online (Sandbox Code Playgroud)
它最后一次发布于2011年3月,我的猜测是它们还没有反映Visual Studio 2012附带的类型提供程序的最终版本.
F#类型提供商看起来像一项伟大的技术,但我们需要帮助构建它们.任何帮助表示赞赏.