如何获得可选参数的默认值

本文关键字:默认值 参数 何获得 | 更新日期: 2023-09-27 18:10:32

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

I read here 表达式树不能包含使用可选参数的调用或调用这是不可能的。

我的意思

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

失败与System.TypeInitializationException

好的,我将传递默认值。但是如何获得参数的默认值呢?

ctorInfo.GetParameters().Select(??

动机:学习目的,没有实际应用。

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

如何获得可选参数的默认值

根据ParameterInfo.RawDefaultValue的文档:

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

希望有帮助

编辑:更正属性因为:

此属性[DefaultValue]仅在执行上下文中使用。在

请使用RawDefaultValue属性。