【发布时间】:2013-09-24 21:34:17
【问题描述】:
我有一个Action<object, object> 的列表,我最终会在某个时间点将其恢复为Action<string, int>,或任何其他两种类型。它表示从一种类型到另一种类型的动态引用映射。由于各种原因,我无法使用ref 或Func<..>。
基本上问题在于,在Action<string, int> 的回调代码中,我需要一种方法来设置传入的int 的值,比如在我将其从字符串转换之后。虽然不是ref,但具体怎么做就不清楚了。
是否有人碰巧知道是否有一种方法可以动态重写该方法,或者以其他方式获取传递给它的值(也许是在堆栈上)并设置int 值...在 CLR 上一步调用栈?
为了阻止任何人说“为什么不改变你的整个程序”或“你什么时候需要这个?”,我只是在尝试一种新的对象映射库的想法。
【问题讨论】:
-
你不会,如果不是
ref你不能改变调用者的值。您可以返回允许调用者更改它的新值,但是除非传递了引用,否则每个具有的 int 版本是不同的并且是隔离的。 -
其实,你可以改变调用者的值。您可以在运行时重写该方法以由 ref 传递,但这不是一个很好的解决方案,我正在尝试提出一个更好的解决方案。
标签: c# reflection dynamic-programming