2

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

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

我是说

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

失败System.TypeInitializationException

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

ctorInfo.GetParameters().Select(??

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

编辑:编辑了表达式树标签,因为它不在构建表达式的上下文中,通常也有效。

4

1 回答 1

3

根据以下文档ParameterInfo.RawDefaultValue

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

希望能帮助到你

编辑:更正属性,因为:

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

于 2013-04-24T06:58:22.800 回答