问题
Hi I have this piece of code on F#, if I test it from the F# Interactive Editor both isPalindrome and Extract methods work well:
namespace Portable3
open FSharp
open FSharp.Data
open Microsoft.FSharp.Linq
open FSharp.Data.FreebaseOperators
open MyTrip.Model.MyTrip
open MyTrip.Model.FreeBase
open System.Runtime
open System.Linq
module math =
let isPalindrome (str : string) =
let rec check(s : int, e : int) =
if s = e then true
elif str.[s] <> str.[e] then false
else check(s + 1, e - 1)
check(0, str.Length - 1)
[<AutoOpen>]
module Extractor =
[<Literal>]
let FreebaseApiKey = "AIzaSyCO31Ls"
type FreebaseDataWithKey = FreebaseDataProvider<Key=FreebaseApiKey>
let Extract mid = let dataWithKey = FreebaseDataWithKey.GetDataContext()
let place = dataWithKey.Commons.Travel.``Travel destinations``.Where( fun x-> x.MachineId = mid) |> Seq.toList
let result = new Place()
let firstPlace = place.Head
result.Name <- firstPlace.Name
result
And I call this code from a C# Console app like this:
class Program
{
static void Main(string[] args)
{
//Works well
var isPalin = math.isPalindrome("ABsBA");
//fails
var res = Extractor.Extract("/m/04jpl");
Console.WriteLine(res);
Console.Read();
}
}
The console C# project is .net Framework 4.5.1 version, I downloaded the FSharp.Data and FSharp.Core on this project also. When executing isPalindrome works well but when I'm about to execute the Extract method this error appears:
An unhandled exception of type 'System.MissingMethodException' occurred in FsharpConsoleTest.exe
Additional information: Method not found: 'FSharp.Data.Runtime.Freebase.FreebaseDataContext FSharp.Data.Runtime.Freebase.FreebaseDataContext._Create(System.String, System.String, System.Boolean, System.String, System.Boolean, System.Boolean)'.
Any idea on what's happening? I searched on internet but didn't found anything relevant. Thanks!
回答1:
The problem at the end was using a portable library with FSharp.Data. I tried using it in a normal F# library and I found no problems, I had all the debuggin capabilities, and no errors from c# integration with f# are happening!
来源:https://stackoverflow.com/questions/22608519/fsharp-data-system-missingmethodexception-when-calling-freebase-provider-from