我有一个带有可选参数的构造函数。我想要一个表情调用该构造函数而不提供可选参数(我的意思是让该对象使用参数的默认值构造)。
我在这里读到表达式树不能包含使用可选参数的调用或调用 https://stackoverflow.com/questions/12413583/an-expression-tree-may-not-contain-a-call-or-invocation-that-uses-optional-argum这是不可能的。
I mean
var ctorInfo = getIt;
var f = Expression.Lambda<Func<T>>(Expression.New(ctorInfo)).Compile();
失败了System.TypeInitializationException
.
好吧,我将传递默认值。但是如何获取参数的默认值呢?
ctorInfo.GetParameters().Select(??
动机:学习目的,没有现实世界的应用。
Edit:已删除表达式树标签因为它不在构建表达式的上下文中,所以通常也有效。
根据的文档ParameterInfo.RawDefaultValue http://msdn.microsoft.com/en-us/library/system.reflection.parameterinfo.rawdefaultvalue.aspx:
ctorInfo.GetParameters().Select( p => p.RawDefaultValue );
希望能帮助到你
编辑:更正属性,因为:
此属性 [DefaultValue] 仅在执行上下文中使用。在里面
仅反射上下文,请改用 RawDefaultValue 属性。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)