2012-03-18 32 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

相关问题