我有理由相信我使用的类型提供商正在挂起我在Android模拟器上运行的应用。
在我的Xamarin.Forms应用程序主页面上,我有以下加载操作:
protected override void OnAppearing()
{
_viewModel.Load();
return; // Never gets reached when using Type Provider...
}
我的viewmodel具有以下加载操作:
public void Load() => Cars = new ObservableCollection<Car>(getCars());
我的F#代码如下:
open FSharp.Data
// https://forums.xamarin.com/discussion/1199/how-to-make-our-remote-host-127-0-0-1-reachable-from-android-device-monoandroid-using-vs2010
[<Literal>] (* "10.0.2.2" is the workaround IP address for local host *)
let JsonPathDesignTime = "http://localhost:48213/api/cars"
let JsonPathRunTime = "http://10.0.2.2:48213/api/cars"
type Repository = JsonProvider<JsonPathDesignTime>
type Car = { Make:string ; Model:string }
let getCars() =
try
Repository.Load JsonPathRunTime
|> Array.toSeq
|> Seq.map(fun x -> { Make=x.Make ; Model=x.Model })
with error -> failwith error.Message
我没有观察到上面代码抛出的任何异常。但是,返回客户来电者会发生 NOT 。
注意:
如果我没有使用类型提供程序,而是返回一个空序列,那么应用程序会不挂起。
示例:
type Car = { Make:string ; Model:string }
let getCars() : Car seq =
Seq.empty