Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/257.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 确定DynamicObject成员访问的预期类型_C#_Dynamic_Dynamicobject - Fatal编程技术网

C# 确定DynamicObject成员访问的预期类型

C# 确定DynamicObject成员访问的预期类型,c#,dynamic,dynamicobject,C#,Dynamic,Dynamicobject,是否可以确定动态成员访问所需的类型?我试过了 dynamic foo = new MyDynamicObject(); int x = foo.IntValue; int y = (int)foo.IntValue; 在TryGetMemberinterceptGetMemberBinder中,ReturnType是任意一种方式的对象。我还实现了TryConvert,想知道是否会调用它来进行转换,但它从未被命中 是否还有其他我缺少的覆盖,可以让我确定调用方想要的类型,以便我可以进行适当的转换?

是否可以确定动态成员访问所需的类型?我试过了

dynamic foo = new MyDynamicObject();
int x = foo.IntValue;
int y = (int)foo.IntValue;
TryGetMember
intercept
GetMemberBinder中,ReturnType
是任意一种方式的对象。我还实现了
TryConvert
,想知道是否会调用它来进行转换,但它从未被命中

是否还有其他我缺少的覆盖,可以让我确定调用方想要的类型,以便我可以进行适当的转换?

在C#中,使用dynamic时,编译器总是将binder设置为对象的返回类型,然后对预期的返回类型进行第二次动态隐式转换。因此,当从c#调用DynamicObject时,GetMemberBinder.ReturnType始终是object,但也就是说,如果返回另一种springboard动态对象并实现TryConvert,则可以得到该类型,除非用户将
var或dynamic
作为变量,然后他们有一个代理,在它变成静态类型之前不会做任何事情

做了一些不同的事情,但是沿着这些思路,因为它还希望有一个基于返回类型的动态实现——只需要通过接口描述动态对象