在变量中存储Lambda表达式

nfp*_*lee 41 c#

我认为我的大脑已经变得油腻,因为我正在努力做一些简单的事情.在我的应用程序中,我有以下代码来配置Nhibernate(我的问题不是特定于Nhibernate).

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

但是我需要将配置(ExposeConfiguration中的内容)存储在私有变量中.我可以做以下事情:

return Fluently.Configure()
    .ExposeConfiguration(c => _configuration = c);
Run Code Online (Sandbox Code Playgroud)

_configuration是一个私有变量.但这并没有添加我的额外配置选项(EventListeners的东西).我玩各种各样的东西,但我想我的lambda知识不如我想的那么好.

我很感激你的帮助.谢谢

Col*_*kay 66

lambda表达式只是一个经常映射到其中一个Func<T1, T2, ..., TResult>变体的委托.

Func<T1, TResult> myVar = c => _configuration = c;
Run Code Online (Sandbox Code Playgroud)

替换TResultT1与相关类型.

这可能对你有用.

  • 很好的答案,虽然我最初有点困惑T1和TResult如何与功能相对应.这是一个可能更清楚的例子:`Func <int,string> numberToString =(num)=> {return num +"";};` (3认同)
  • 难道不是反过来吗?Func&lt;T1,TResult&gt; 而不是 Func&lt;TResult,T1&gt;, ... 等? (2认同)