2010-10-19 62 views
0

受启发:
NServiceBus.Configure.With()。Log4Net(a => a.YourProperty =“value”);我该如何创建这个Func?

我想使用类似配置的东西,欢迎提出建议。我最大的问题是,我不能完全弄清楚如何使用参数输入...

这里究竟发生了什么?例如,NServiceBus使用Log4Net吗?设置YourProperty =值?

请从NServiceBus等抽象我刚才提供作为讨论的基础。

+1

看到[这个问题](http://stackoverflow.com/questions/1718037/abuse-of-c-lambda-expressions-or-syntax-brilliance)它解释了发生了什么(并讨论如果这是一个好主意或不) – Cameron 2010-10-19 20:41:43

+0

.Attributes(style =>“width:100%”) 我认为这是另一种风格,因为你在这里没有使用属性,而是一种不强大的类型。 – Janus007 2010-10-19 21:14:00

回答

1

lambda正在创建一个表达式树,它不是代码,而是关于lambda应该做什么的元数据。

因此,您可以“拆开”lambda并查看哪些属性,方法等将在该实例上访问(从来不存在,因为它只是一个定义)。

Google for "expression tree .net"您将在该主题上找到lot of info

+0

嗨Lucero,谢谢你指着我一个叫做Google *的搜索引擎*你有什么告诉我我完全知道,但是我有兴趣知道这个方法看起来像什么样的,它实际上可以处理这样的输入以及它如何处理它: ) – Janus007 2010-10-19 21:16:26

+0

嗨Lucero ... 我想我现在开始了解......但我有一个问题,但!我怎样才能设置价值?我已经写了好几年的表达,但是他们使用平等的,这个使用财产。 它应该是这样的:Expression > predicate – Janus007 2010-10-19 21:55:38

+0

对不起,如果我发布了你已经知道的东西。很多人都不知道lambda没有直接被C#编译器编译为IL代码,而是它们实际上是一个抽象语法树,可以解析,修改并最终编译为IL。至于访问属性,看看http://msdn.microsoft.com/en-us/library/system.linq.expressions.expression.property.aspx(对不起,另一个链接到MSDN的跛脚);) – Lucero 2010-10-19 22:05:30