如何获取可选参数的默认值?

我有一个带可选参数的构造函数。 我想有一个表达式来调用该构造函数而不提供可选参数(我的意思是让对象使用参数的默认值构造)。

我在这里阅读表达式树可能不包含使用可选参数的调用或调用 ,这是不可能的。

我的意思是

var ctorInfo = getIt; var f = Expression.Lambda<Func>(Expression.New(ctorInfo)).Compile(); 

使用System.TypeInitializationException失败。

好的,我会传递默认值。 但是如何获取参数的默认值?

 ctorInfo.GetParameters().Select(?? 

动机:学习目的,没有现实世界的应用。

编辑:编辑表达式树标记,因为它不在构建表达式的上下文中,一般也有效。

根据ParameterInfo.RawDefaultValue的文档 :

 ctorInfo.GetParameters().Select( p => p.RawDefaultValue ); 

希望能帮助到你

编辑:更正属性,因为:

此属性[DefaultValue]仅在执行上下文中使用。 在仅reflection上下文中,请改用RawDefaultValue属性。