【发布时间】:2014-11-18 14:13:01
【问题描述】:
如果(直接)使用对象实例,是否有可能让 IronPython 访问对象的默认属性?
IronPython 访问的值(在我们的程序中)包装在某个 class Variable<T> 对象中,始终具有名为 Value 的 T 类型的属性。当我写作时
if someBoolVariable:
print "Hello World"
IronPython 检查someBoolVariable != null,在我们的例子中总是正确的。相反,我希望它检查someBoolVariable.Value。
数值变量也是如此:
Temp = someDoubleVariable + someDoubleVariable
返回类型中未实现加法运算符的错误。我想让它自动评估为Temp = someDoubleVariable.Value + someDoubleVariable.Value。
我仍然希望能够访问对象的其他属性。因此,超出范围时无法转换对象。我已经尝试附加 DefaultMemberAttribute 和/或 DefaultPropertyAttribute,但这似乎没有任何效果...
编辑:
对于布尔变量(这是其中的一个重要组),我找到了答案。但是,对于数值,这也很好。从理论上讲,我可以为所有算术运算创建方法,但它们的数量非常多——尤其是在混合不同类型时......最好有类似 __value__() 或 __self__() 的方法(它确实似乎不存在)它只是返回要使用的值而不是对象......
【问题讨论】:
-
为什么这个标签是
C#? -
其他语言支持吗?我知道 VB 在定义索引器时使用了这个术语,但我从未见过它在你想要的上下文中使用。
-
IronPython 脚本在 C# 应用程序中使用,因此所有类/对象都在 C# 中定义。
-
您可能应该标记 .net 或 clr 而不是 C#。您是否考虑过使用 implicit converters 来处理数字类型的展开?
-
我已将 C# 更改为 .net。但是,隐式转换运算符仅在将值分配给变量时(仅适用于 C# 等静态类型语言)或调用需要目标类型的函数时使用。它们不用于算术运算符。
标签: .net properties ironpython