naw*_*fal 10 .net reflection default-value optional-parameters
这是如何获取可选参数的默认值的后续问题?
如果参数具有默认值,则获取一个指示默认值的值.
此属性仅在执行上下文中使用.在仅反射上下文中,请使用RawDefaultValue属性.
如果未在方法调用中指定实际值,则使用默认值.参数可以具有null的默认值.这与未定义默认值的情况不同.
如果参数具有默认值,则获取一个指示默认值的值.
此属性可以在执行上下文和仅反射上下文中使用.
如果未在方法调用中指定实际值,则使用默认值.参数可以具有null的默认值.这与未定义默认值的情况不同.
文档是如此相似,除了一个用于反射上下文而另一个用于反射上下文.那是什么区别?何时DefaultValue使用时没有反射?我的意思是如何在没有反射的情况下获得默认值?我错过了什么吗?
更新
我创建了两个这样的重载:
public void Required(string value)
{
}
public void Optional(string value = "", int i = -1)
{
}
Run Code Online (Sandbox Code Playgroud)
我测试过:
var f = requiredInfo.GetParameters().Select(p => p.DefaultValue).ToArray();
var g = requiredInfo.GetParameters().Select(p => p.RawDefaultValue).ToArray();
var h = optionalInfo.GetParameters().Select(p => p.DefaultValue).ToArray();
var i = optionalInfo.GetParameters().Select(p => p.RawDefaultValue).ToArray();
//f equals g and h equals i in every way!
Run Code Online (Sandbox Code Playgroud)
那么鉴于我的测试显示(所有在反射环境中)没有任何区别,有什么区别?
"在反思的背景下"和"仅反射的背景"之间存在微妙但显着的差异."仅反思上下文"指的是非常具体的内容:
这是一种仅用于检查加载组件的方法,并且具有不需要加载任何相关组件或甚至不存在的独特优点.
由于您似乎打算执行您正在反映的某些代码,因此仅反射上下文对您的使用有限.
| 归档时间: |
|
| 查看次数: |
1089 次 |
| 最近记录: |