是否可以确定动态成员访问需要什么类型?我试过了
dynamic foo = new MyDynamicObject();
int x = foo.IntValue;
int y = (int)foo.IntValue;
并且在TryGetMember
截距GetMemberBinder.ReturnType
无论哪种方式都是对象。我也实施了TryConvert
想知道是否可能会调用它来进行转换,但它从未被命中。
我是否缺少其他一些覆盖,可以让我确定调用者想要什么类型,以便我可以进行适当的转换?
在 C# 中,当使用动态时,编译器始终将绑定器设置为对象的返回类型,然后执行第二次动态隐式转换为预期的返回类型。因此,在从 C# 调用时,在 DynamicObject 上,GetMemberBinder.ReturnType 将始终是对象,但这就是说,如果您返回另一种实现了 TryConvert 的跳板动态对象,您可以获得该类型,除非用户这样做var or dynamic
作为变量,那么它们有一个代理,在它成为静态类型之前不会执行任何操作。
即兴界面 http://code.google.com/p/impromptu-interface/做了一些不同的事情,但沿着这些思路,因为它还希望有一个根据返回类型而变化的动态实现——只是你必须通过接口来描述动态对象。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)