gpt4 book ai didi

c# - DynamicObject 隐式转换

转载 作者:太空狗 更新时间:2023-10-29 22:35:10 26 4
gpt4 key购买 nike

我有一个 DynamicObject 的子类,我想像 DO 的显式转换方法 TryConvert 一样实现原始类型的隐式转换;也就是说,无需编写多个隐式运算符 [type] 函数。

用法:

dynamic myDynamicObject = new MyDynamicObject("1");
int sum = 1 + myDynamicObject; // instead of int i = 1 + (int)myDynamicObject;

这可能吗?如果可能,怎么做?

最佳答案

这里发生了几件事。

首先,您要执行二元运算。所以,你需要覆盖 TryBinaryOperation方法也一样。它将在转换之前首先被调用。然后,您可以从 TryBinaryOperation 方法执行转换。

其次,无论出于何种原因,仅当您编写如下语句时才会调用 TryBinaryOperation:

int sum = myDynamicObject + 1;

在我看来,顺序很重要。我会与 DLR 团队确认这是错误还是有意为之。

更新:这不是错误。要同时支持“1 + myDynamicObject”和“myDynamicObject + 1”,您不仅需要 TryBinaryOperation,还需要像 TryBinaryOperationFromRight 这样的东西,而当前的 DynamicObject 根本没有。

关于c# - DynamicObject 隐式转换,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2075649/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com