跨不同程序集的函数参数
本文关键字:函数 参数 程序集 | 更新日期: 2023-09-27 18:33:13
假设我有一个在程序集 A.dll 中定义的函数DoStuff
。此函数采用Func<T>
参数。我在 B.dll 中调用这个函数为 DoStuff(() => ...)
。
在哪里评估Func<T>
?它似乎在 B.dll 内部,但我希望它在 A.dll 内部。如果Func<T>
需要外部引用,会发生什么情况?我是否被迫将它们包含在 B.dll 中?我可以强制它在 A.dll 中执行吗?
lambda 被编译成 B 并在那里执行。
您可以在此处阅读有关其工作原理的更多信息:C# lambda 编译成什么?堆栈帧、匿名类型的实例,还是?
在哪里评估 Func?
您正在将函数定义从 B
传递到 A
。 编译后的代码存在于 B
中。 A
大概将函数作为DoStuff
的一部分执行。
如果
Func<T>
需要外部引用,会发生什么情况?
然后,项目 B 需要引用这些依赖项,并且需要包含在最终版本中,这可能意味着也从执行项目(注释中的 WCF 服务)引用它们。