背景:我正在为一种简单的语言编写翻译,让用户可以玩耍并享受乐趣。它将作为游戏的mod运行。我不能使用动态的原因是因为游戏在Unity3d中运行,Unity3d运行的Mono版本相当于.net 3.5(没有动态)。
现在提出问题:我将值存储为对象。在评估表达式(比如说,添加)时,我遇到了尝试“对象+对象”的问题。我怎么能这样做?
一种解决方案是在每个对象上执行大量的switchblock,检查它的类型以查看它是否是基本值类型(int,long,double等),如果是,则转换为该类型并添加。如果它不是基本值类型,请在每种类型中查找op_Addition方法,如果存在,请调用它。
这可以很快地为每个运营商做很多代码。我想知道是否有更好的,更少的复制粘贴方式。 (最佳解决方案是某些.net库函数,object Add(object, object)
,但这是有希望的)
答案 0 :(得分:1)
您可以为定义所需操作的对象定义接口,然后确保所有存储对象都实现该接口(可能包含简单类型)。