2015-07-10 95 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'挑選的部分。 –