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

时间:2013-04-24 06:44:44

标签: c# constructor default-value optional-parameters

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

我在这里读到 An expression tree may not contain a call or invocation that uses optional arguments ,这是不可能的。

我的意思是

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

System.TypeInitializationException失败。

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

ctorInfo.GetParameters().Select(??

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

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

1 个答案:

答案 0 :(得分:3)

根据the documentation for ParameterInfo.RawDefaultValue

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

希望有所帮助

编辑:更正了属性,因为:

  

此属性[DefaultValue]仅在执行上下文中使用。在里面   仅反射上下文,改为使用RawDefaultValue属性。