May 2025
Intermediate to advanced
1086 pages
14h 54m
Chinese
本作品已使用人工智能进行翻译。欢迎您提供反馈和意见:translation-feedback@oreilly.com
第 4 章介绍了 C# 语言中动态绑定的工作原理。在本章中,我们将简要介绍动态语言运行时(DLR),然后探讨以下动态编程模式:
动态解决成员过载问题
自定义绑定(实现动态对象)
动态语言互操作性
在第 24 章中,我们将介绍dynamic 如何改进 COM 的互操作性。
本章中的类型位于System.Dynamic 命名空间中,但CallSite<> 除外,它位于System.Runtime.CompilerServices 中。
C# 依赖 DLR 来执行动态绑定。
与它的名字相反,DLR 并不是 CLR 的动态版本。相反,它是一个位于 CLR之上的库,就像System.Xml.dll 等其他库一样。它的主要作用是提供运行时服务,以统一静态和动态类型语言中的动态编程。因此,C#、Visual Basic、IronPython 和 IronRuby 等语言都使用相同的协议来动态调用函数。这样,它们就可以共享库并调用用其他语言编写的代码。
DLR 还使在 .NET 中编写新的动态语言变得相对容易。动态语言作者不必发射中间语言 (IL),而是在表达式树(与我们在第 8 章中谈到的表达式树相同)层次上工作。 System.Linq.Expressions中的表达式树)。
DLR 还确保所有用户都能从调用站点缓存中获益,通过这种优化,DLR 可以避免不必要地重复在动态绑定过程中做出的代价可能很高的成员解析决策。
Read now
Unlock full access