我有一个要向 clearscript 引擎公开的集合,目前我必须指定 Value 属性是静态类型 int 以便将基本算术脚本编写为加号或减号将起作用:
这是我向脚本引擎公开的集合和它使用的类:
public class LogicBlockIOCollection : ConcurrentDictionary<string, LogicBlockIO> { }
public class LogicBlockIO
{
public string Name;
public dynamic Value;
}
我正在使用以下方法将主机对象添加到我的 clearscript 引擎中:
public void AddBlock(LogicBlockIOCollection Entries)
{
foreach (var Entry in Entries)
{
this[LastBlockID].Engine.Script[Entry.Key] = Entry.Value.Value;
}
}
当我将 LogicBlockIO.Value 属性编程为动态并运行以下脚本时,我会收到以下结果:
C = A + B;
C = 1 + 2;
C = 12; //Not 3 as expected
当我将 LogicBlockIO.Value 属性编程为整数时,我尝试运行相同的简单脚本,我得到了我期望的结果:
C = 3;
是否有人建议如何使用可能具有不同类型的单个属性来实现我的要求?