Хранение выражения Лямбды в переменной
Я думаю, что мой мозг стал жарить, потому что я изо всех сил стараюсь сделать что-то простое. В моем приложении у меня есть следующий код для настройки 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). Я играл с различными вещами, но я думаю, что знание лямбда не так хорошо, как я думал.
Буду признателен за вашу помощь. Благодаря
Ответы
Ответ 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>();