2012-03-18 20 views
0

我正在審查「練習1:構建您的第一個Windows Azure應用程序」微軟Azure Training Kit內,就遇到了這個代碼段是有點不清楚。不清楚Azure的「SetConfigurationSettingPublisher()」的使用在應用程序啓動時間

內置的文檔跳過說明本,我不清楚在這個單一的,複合語句以下:

  • 方法參數
  • 的PARAMS configNameconfigSetter內的=>表達不被初始化在此聲明之前的任何地方(?)
  • 高級用例/目的此

這裏有人能幫我理解嗎?

void Application_Start(object sender, EventArgs e) 
    { 
     // Code that runs on application startup 
     Microsoft.WindowsAzure.CloudStorageAccount.SetConfigurationSettingPublisher(
       (configName, configSetter) => 
       { 
        configSetter(RoleEnvironment.GetConfigurationSettingValue(configName)); 
       }); 
    } 

感謝

回答

1

它只是一個lambda
它定義一個「匿名」的方法,並將其作爲一個委託(參照函數調用)參數。

「=>」分離方法主體匿名方法參數。
CONFIGNAME和configSetter是參數的方法中,它們的類型從代碼接收和限定所述方法推斷,聰明是嗎?

這裏其正只是用來保持代碼的簡潔,在那你可以定義一個真正的方法,做同樣的工作,但這樣的代碼是小,少了一個命名方法。

[編輯]

而且似乎在這裏用來控制CloudStorageAccount如何讀取它的設置。 也就是說lambda指示將配置項讀取到RoleEnvironment類以從Azure角色的服務配置中讀取,但它可以更改爲從其他位置讀取它們。

1

這是一個 「拉姆達」,有時也被稱爲 「匿名函數」。見http://msdn.microsoft.com/en-us/library/bb397687.aspx

你看到的有速記這樣的事情(道歉,如果我得到了一些類型的錯誤):

void myPublisher(string configName, Func<string, bool> configSetter) 
{ 
    configSetter(RoleEnvironment.GetConfigurationSettingValue("configName")); 
} 
... 
Microsoft.WindowsAzure.CloudStorageAccount.SetConfigurationSettingPublisher(myPublisher); 

[編輯]

在Windows Azure中,配置設置出版商運行,當你做像CloudStorageAccount.FromConfigurationSetting("foo")。在這種情況下,它從Windows Azure的配置設置中讀取配置設置"foo"(例如,相對於web.config)。

+0

感謝,聲明的機制現在已經很清楚!但是,該聲明在與其他運動部件銜接方面的高級別目的是什麼? – DeepSpace101 2012-03-18 20:59:09

+0

我編輯了我的答案。 Peter Wishart的回答也適合我。 – smarx 2012-03-18 23:07:04

相關問題