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

3
我有一个带有可选参数的构造函数。 我想要一个表达式来调用该构造函数,而不提供可选参数(即使用参数的默认值构建对象)。
我在这里阅读到{{link1:表达式树可能不包含使用可选参数的调用或调用}},这是不可能的。
我的意思是
var ctorInfo = getIt;
var f = Expression.Lambda<Func<T>>(Expression.New(ctorInfo)).Compile();

失败并抛出了System.TypeInitializationException异常。
好的,我将传递默认值。但是如何获取参数的默认值呢?
ctorInfo.GetParameters().Select(??

动机:学习目的,没有真实世界应用。
编辑:编辑掉了“expression-tree”标签,因为它不是在构建表达式的上下文中使用,一般也有效。
1个回答

3
根据ParameterInfo.RawDefaultValue文档
ctorInfo.GetParameters().Select( p => p.RawDefaultValue );

希望这可以帮助到您。

编辑:更正属性原因是:

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


是的,它确实有区别!您知道“DefaultValue”和“RawDefaultValue”的区别吗? - nawfal
不完全是。我只是在 MSDN 上查了一下。但是我认为 RawDefaultValue 对于这个目的是正确的。 - Sarrus
好的,我在这里创建了一个单独的问题:https://dev59.com/vmQo5IYBdhLWcg3wR9nD - nawfal

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接