我可能会问不可能,但无论如何我都会问。从以下内容:
public SomeClassConstructor(SomeOtherClass someOtherClass, string someString){
...
}
是否可以访问参数以便可以迭代它们(例如某种反射来访问包含参数的IEnumerable<object>
?
注意:在这种情况下,params []集合不是答案。其他限制是,这将在WinForms环境中使用; .Net 4.5是可以接受的。
编辑:在回应DavidG的评论时,我追随的是物品本身(又名价值和名称)。原因是我需要在打开表单时(在app.config中设置UAT标志时)记录(序列化)参数。大型对象的序列化超过了返回简单的字符串,以免在内存中膨胀。)。答案 0 :(得分:3)
不,您无法通过反射访问参数值。您可以获取名称,类型,属性等 - 但不是值。方法,构造函数,属性设置器,索引器等等都是如此。
您可以在调试器API中执行此操作,但这几乎从来都不是正确的方法。
对于日志记录,您应 手动执行此操作:
Log("someOtherClass={0}, someString={1}", someOtherClass, someString);
或查看AOP以自动注入电话 - 例如,请查看PostSharp。