【问题标题】: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%") 我认为这是另一种样式,因为您在这里使用的不是属性,而是在任何地方都没有强类型的样式。

标签: c# .net parameters func


【解决方案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 的蹩脚链接;))
猜你喜欢
  • 2017-08-11
  • 2017-07-06
  • 2022-10-24
  • 2021-10-30
  • 2021-07-10
  • 2017-07-01
  • 1970-01-01
  • 2018-03-25
  • 1970-01-01
相关资源
最近更新 更多