使用 dynamic
功能需要 Microsoft.CSharp。
我了解程序集中有绑定器、评估器和帮助程序。
但为什么它必须是特定于语言的?
为什么是 Microsoft.CSharp 而不是 Microsoft.Dynamic 或 System.Dynamic?
请解释一下。
假设我们有 d.x
,其中 d
是 dynamic
。
C# 编译器
1. 应用 C# 语言规则
2. 得到 "属性或字段访问"
3. 发出 (形象地) Binder.GetPropertyOrField(d, "x")
现在,被要求引用 Microsoft.CSharp 可能会使人们认为,语言无关的绑定器无法处理此情况,并且只有 C#-only 的某些东西通过编译并需要特殊库。
编译器今天过得不太好?