C# 跨不同程序集的函数参数
假设我有一个在程序集a.dll中定义的函数C# 跨不同程序集的函数参数,c#,lambda,C#,Lambda,假设我有一个在程序集a.dll中定义的函数DoStuff。此函数采用Func参数。我在B.dll中调用这个函数,称为DoStuff(()=>…) 在哪里计算Func?它似乎位于B.dll内部,但我希望它位于A.dll内部。如果Func需要外部引用,会发生什么情况?我是否被迫将它们包含在B.dll中?我可以强制它在A.dll内执行吗?lambda被编译成B并在那里执行 您可以在此处阅读有关其工作原理的更多信息: Func在哪里计算 您正在将函数定义从B传递到A。编译后的代码存在于B中A可能作为Do
DoStuff
。此函数采用Func
参数。我在B.dll中调用这个函数,称为DoStuff(()=>…)
在哪里计算
Func
?它似乎位于B.dll内部,但我希望它位于A.dll内部。如果Func
需要外部引用,会发生什么情况?我是否被迫将它们包含在B.dll中?我可以强制它在A.dll内执行吗?lambda被编译成B并在那里执行
您可以在此处阅读有关其工作原理的更多信息:
Func在哪里计算
您正在将函数定义从B
传递到A
。编译后的代码存在于B
中A
可能作为DoStuff
的一部分执行该函数
如果Func
需要外部引用,会发生什么情况
然后,这些依赖项将需要被项目B引用,并且需要包含在最终构建中,这可能意味着也需要从正在执行的项目(您的评论中的WCF服务)中引用它们。什么是要求,在实际项目中,您被预测要进行如此复杂的实现,出于好奇,你有可能透露更多的东西吗?这更像是一个设计决定。我有一个WCF服务,我想打电话。我在一个单独的程序集中定义了一个包装器方法,它接受一个
Func
,并捕获任何异常以将它们包装到我定义的响应
对象中。问题是,无论在何处调用此方法,我都必须在单独的程序集中包含额外的程序集。@bbush这可能会对您有所帮助:太好了,谢谢。你能想一想我怎样才能做到这一点吗?理想情况下,我希望编译发生在A中。我对表达式树进行了修改,从技术上讲,它是有效的,但这些都是严重错误的。@bbush这样做没有多大意义。也许你可以用一个新问题来解释/扩展这一点,这会有所帮助。我刚才问了,没有回答。太好了,谢谢。你能想一想我怎样才能做到这一点吗?理想情况下,我希望编译发生在A中。我摆弄了表达式树,从技术上讲,它是有效的,但这些都受到了严重的限制。你为什么关心编译后的函数在哪里?它有什么区别?它需要额外的依赖项,具体取决于编译的位置。我更愿意允许A.dll的使用者不需要任何额外的工作。A
不应该引用依赖项,除非它直接使用它们。只有使用依赖程序集中的类/方法的项目和最终项目(应用程序、网站、服务等)才需要引用依赖项。