2015-07-10 94 views
2

我看Facebook SDK,第一次,我想用F#来实现它获得了Facebook访问令牌。我试图根据我的应用程序的appId,appSecret和clientToken获取访问令牌。我正在查看StackOverflow上找到的C#示例here如何使用F#

如何翻译此C#代码?

var fb = new FacebookClient(); 
dynamic result = fb.Get("oauth/access_token", new { 
    client_id  = "app_id", 
    client_secret = "app_secret", 
    grant_type = "client_credentials" 
}); 
fb.AccessToken = result.access_token; 

F#不允许动态输入,我不知道如何实现它。

在此先感谢。

回答

3

可以使用ImpromptuInterface.FSharp NuGet包通过?运营商能够动态查找。这将使你写result?access_token

使用匿名类型实际上是比较难翻译,因为F#不具备的。该解决方案取决于他们是如何使用的,虽然我不知道Facebook的SDK如何消耗这些价值观,我会认为它的工作方式的ASP.NET Web API,它使用匿名类型为相同替代字典。

在这种情况下,你需要先创建一个记录与相应的属性:

type Credentials = { 
    client_id  : string 
    client_secret : string 
    grant_type : string 
} 

这应该使您能够创建该类型的新值:

{ 
    client_id  = "app_id" 
    client_secret = "app_secret" 
    grant_type = "client_credentials" 
} 
+2

值得提到C#'dynamic'在IL中不存在,并且被编译为'object'。因此,在F#,你将有一个价值'obj',然后使用'?'运营商实现从'ImpromptuInterface.FSharp'挑选的部分。 –