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

Posted

技术标签:

【中文标题】如何获取可选参数的默认值?【英文标题】:How do I get default values of optional parameters? 【发布时间】:2013-04-17 14:22:20 【问题描述】:

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

我在这里读到 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(??

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

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

【问题讨论】:

【参考方案1】:

据the documentation for ParameterInfo.RawDefaultValue

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

希望对你有帮助

编辑:更正属性,因为:

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

【讨论】:

是的!你知道DefaultValueRawDefaultValue的区别吗? 不完全是。我刚刚在msdn上查了一下。但是我认为RawDefaultValue 适合这个目的。 好的,我在这里单独提出了一个问题***.com/questions/16185826/…

以上是关于如何获取可选参数的默认值?的主要内容,如果未能解决你的问题,请参考以下文章

将空数组作为可选参数的默认值传递[重复]

如何检查是不是设置了可选功能参数

Dart语法之可选参数

设置 C# 可选参数的默认值

可选命令行参数的默认值

Dart 知识点:可选参数必需参数