跨不同程序集的函数参数

本文关键字:函数 参数 程序集 | 更新日期: 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 服务)引用它们。