Подтвердить что ты не робот

Хранение выражения Лямбды в переменной

Я думаю, что мой мозг стал жарить, потому что я изо всех сил стараюсь сделать что-то простое. В моем приложении у меня есть следующий код для настройки Nhibernate (моя проблема не относится к Nhibernate).

return Fluently.Configure()
    .ExposeConfiguration(c => {
        c.EventListeners.PostInsertEventListeners = new IPostInsertEventListener[] { new LoggingEventListener() };
        c.EventListeners.PostUpdateEventListeners = new IPostUpdateEventListener[] { new LoggingEventListener() };
   });

Однако мне нужно сохранить конфигурацию (материал внутри ExposeConfiguration) внутри частной переменной. Я могу сделать следующее:

return Fluently.Configure()
    .ExposeConfiguration(c => _configuration = c);

Где _configuration является частной переменной. Но это не добавляет моих дополнительных параметров конфигурации (материал EventListeners). Я играл с различными вещами, но я думаю, что знание лямбда не так хорошо, как я думал.

Буду признателен за вашу помощь. Благодаря

4b9b3361

Ответ 1

Лямбда-выражение - это просто делегат, который часто сопоставляется с одним из вариантов Func<T1, T2, ..., TResult>.

Func<T1, TResult> myVar = c => _configuration = c;

Замена TResult и T1 на соответствующие типы.

Это может сработать для вас.

Ответ 2

Конечно. Предполагая, что _configuration будет хранить то, что вы использовали в первом бите кода. Он должен выглядеть примерно так:

return Fluently.Configure().ExposeConfiguration(c => {
c.EventListeners.PostInsertEventListeners = _configuration;
c.EventListeners.PostUpdateEventListeners = _configuration;});

Если в компиляторе есть какие-то ошибки при бросании, вы всегда можете использовать:

_configuration.Cast<IPostInsertEventListeners>();