我怎样才能创建这个函数?

Posted

技术标签:

【中文标题】我怎样才能创建这个函数?【英文标题】:How can I create this Func? 【发布时间】:2011-04-27 17:12:21 【问题描述】:

灵感来自: NServiceBus.Configure.With().Log4Net(a => a.YourProperty = "value");

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

这里到底发生了什么? NServiceBus 使用 Log4Net 作为实例?使用 YourProperty = value 设置?

请从 NServiceBus 等中抽象出来。我刚刚提供了它作为讨论的基础。

【问题讨论】:

参见this question,它解释了正在发生的事情(并讨论这是否是个好主意) .Attributes(style => "width:100%") 我认为这是另一种样式,因为您在这里使用的不是属性,而是在任何地方都没有强类型的样式。 【参考方案1】:

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

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

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

【讨论】:

嗨 Lucero,感谢您将我指向一个名为 Google whhoooo 的搜索引擎实际上可以处理这样的输入以及它如何处理它:) 嗨 Lucero...我想我现在开始明白了...但是我有一个问题!如何设置值?我已经写了好几年的表达式……但是他们使用相等的,这个使用属性。应该是这样的: Expression> predicate 对不起,如果我发布了您已经知道的内容。很多人不知道 lambdas 不是由 C# 编译器直接编译为 IL 代码,而是它们实际上是一个抽象语法树,可以被解析、修改并最终编译为 IL。至于访问属性,请查看msdn.microsoft.com/en-us/library/…(对不起,另一个指向 MSDN 的蹩脚链接;))

以上是关于我怎样才能创建这个函数?的主要内容,如果未能解决你的问题,请参考以下文章

我怎样才能在这个函数中保持数学顺序?

如何每小时调用一次函数?另外,我怎样才能循环这个?

我怎样才能让这个 Map 双函数忽略/跳过空值?

我怎样才能重新调用这个函数?没有经验的ES6

斯威夫特:我怎样才能在完成体内调用我的函数?

我怎样才能只为第一个函数调用做某事?