0

背景:我正在为一种简单的语言编写解释器,供用户玩耍和玩乐。它将作为游戏的模组运行。我不能使用动态的原因是因为游戏在 Unity3d 中运行,它运行相当于 .net 3.5 的 Mono 版本(没有动态)。

现在的问题是:我将值存储为对象。在评估表达式(比如添加)时,我遇到了尝试做“对象+对象”的问题。我怎样才能做到这一点?

一种解决方案是在每个对象上做一个巨大的 switchblock,检查它的类型以查看它是否是基本值类型(int、long、double 等),如果是,则转换为该类型并添加。如果不是基本值类型,则在每种类型中查找 op_Addition 方法,如果存在,则调用它。

这可能会很快为每个操作员执行大量代码。我想知道是否有更好的,更少复制粘贴的方式。(最佳解决方案是一些 .net 库函数object Add(object, object),但这是有希望的)

4

1 回答 1

1

您可以为定义所需操作的对象定义一个接口,然后确保所有存储的对象都实现该接口(可能包装简单类型)。

于 2013-02-23T18:21:01.443 回答