Непонятное использование Azure SetConfigurationSettingPublisher () во время запуска приложения - PullRequest
0 голосов
/ 18 марта 2012

Я просматривал «Упражнение 1: создание вашего первого приложения Windows Azure» в Microsoft Azure Training Kit и наткнулся на этот фрагмент кода, который немного неясен.

Встроенная документация пропускает объяснение этого, и я неясен относительно следующего в этом единственном составном утверждении:

  • выражение => внутри аргумента метода
  • параметры configName и configSetter нигде не инициализируются до этого утверждения (?)
  • сценарий использования высокого уровня / цель этого

Может кто-нибудь здесь может помочь мне понять это?

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

Спасибо

Ответы [ 2 ]

1 голос
/ 19 марта 2012

Это просто лямбда .
Он определяет "анонимный" метод и передает его в качестве параметра делегата (ссылка на вызов функции).

"=>" отделяет параметры анонимного метода от тела метода.
configName и configSetter являются параметрами метода, их тип определяется из кода, принимающего и определяющего метод, умный, а?

Здесь он используется только для краткого хранения кода, поскольку вы можете определить реальный метод для выполнения той же работы, но таким образом код будет меньше и будет иметь один метод с меньшим именем.

[Редактировать]

И здесь, похоже, он используется для управления тем, как CloudStorageAccount считывает настройки.Т.е. лямбда направляет чтение элементов конфигурации в класс RoleEnvironment для чтения из конфигурации службы роли Azure ... но его можно изменить, чтобы читать их из другого места.

1 голос
/ 19 марта 2012

Это «лямбда», которую иногда называют «анонимной функцией». Смотри 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"). В этом случае он считывает параметр конфигурации "foo" из параметров конфигурации Windows Azure (в отличие, например, web.config).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...