我在 C# 4 中实现了 IDynamicObject,返回一个自定义 MetaObject 子类,该子类将简单的属性 getter/setter 分派到 Dictionary。不是火箭科学。
如果我这样做:
dynamic foo = new DynamicFoo();
foo.Name = "Joe";
foo.Name = "Fred";
Console.WriteLine(foo.Name);
然后 'Joe' 被打印到控制台……第二次调用 'Name' setter 永远不会被调用(永远不会进入我的自定义调度程序代码)。
我知道 DLR 会进行呼叫站点缓存,但我认为这不适用于这里。有谁知道发生了什么?