给出下面的变量之一,如何'检查'它们以获取传入的参数值?即12345在lambda /表达式树内寻找
System.Func<DateTime> f1 =() => DateTime.Now.AddDays(12345);
System.Linq.Expressions.Expression<System.Func<DateTime>>
f2 =() => DateTime.Now.AddDays(12345);
编辑:
下面的两个答案通过的Mikael和柯克都回答我的问题,一部开拓创新。 但是,现在我已经使这个更复杂一点来处理“现实生活”了。 理想我正在寻找一个“一般”的解决方案,这将有一些工作alongs的下面几行:
var days = 123;
var hours = 456;
System.Func<DateTime> f1 =() => DateTime.Now.AddDays(days).AddHours(hours);
Expression<System.Func<DateTime>> f2 =() => DateTime.Now.AddDays(days).AddHours(hours);
我真正追求的是产生unikey办法“钥匙”给予了lamda表达。 我的想法是使用方法名称和参数名称/值对,但我欢迎其他建议!谢谢。
'f1'确实包含的信息,但只有通过检查从C#编译器生成的IL。如果执行了'f2',则在运行时编译并且C#编译器只创建一个表达式树,您可以使用'Expression'类型和子类型来检查。 – Richard 2010-08-24 15:40:53