应用程序启动时不清楚Azure的SetConfigurationSettingPublisher()用法

时间:2012-03-18 19:54:17

标签: azure-storage

我正在审核Microsoft Azure Training Kit中的“练习1:构建您的第一个Windows Azure应用程序”,并遇到了一个有点不清楚的代码片段。

内置文档会跳过解释这一点,我不清楚这个单一的复合语句中的以下内容:

  • 方法参数
  • 中的=>表达式
  • 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));
                });
    }

由于

2 个答案:

答案 0 :(得分:1)

那是" lambda,"有时被称为"匿名函数。"请参阅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)。

答案 1 :(得分:1)

它只是lambda 它定义了一个“匿名”方法,并将其作为委托(对函数调用的引用)参数传递。

“=&gt;” 中将匿名方法参数与方法体分开 configName和configSetter是方法的参数,它们的类型是从接受和定义方法的代码中推断出来的,聪明的呃?

这里只是用来保持代码简洁,因为你可以定义一个真正的方法来完成同样的工作,但这样代码就更小了,并且只有一个命名方法少了。

[编辑]

此处似乎用于控制CloudStorageAccount如何读取设置。 即lambda将配置项的读取指向RoleEnvironment类以从Azure角色的服务配置中读取..但是可以将其更改为从其他位置读取它们。