public void Set(string name,object value)
{
Value retV = null;
bool bFind = values.TryGetValue(name, out retV);
if (!bFind)
{
if (CallType != null)
{
SType.Member retM = null;
bool bRet = CallType.members.TryGetValue(name, out retM);
if (bRet)
{
if (retM.bStatic)
{
CallType.staticMemberInstance[name].value=value;
}
else
{
CallThis.member[name].value=value;
}
return;
}
}
string err = CallType.Name + "\n";
foreach(var m in CallType.members)
{
err += m.Key + ",";
}
throw new Exception("值没有定义过" + name + "," + err);
}
if ((Type)retV.type == typeof(CLS_Type_Var.var) && value != null)
retV.type = value.GetType();
retV.value = value;
}
public CLS_Content.Value ComputeValue(CLS_Content content) { content.InStack(this); content.DepthAdd(); CLS_Content.Value vrt = null; CLS_Expression_Define define = listParam[0] as CLS_Expression_Define; define.ComputeValue(content); IEnumerator it = (listParam[1].ComputeValue(content).value as IEnumerable).GetEnumerator(); ICLS_Expression expr_block = listParam[2]; while (it.MoveNext()) { content.Set(define.value_name, it.Current); if (expr_block != null) { CLS_Content.Value v = expr_block.ComputeValue(content); if (v != null) { if (v.breakBlock > 2) vrt = v; if (v.breakBlock > 1) break; } } } content.DepthRemove(); content.OutStack(this); return vrt; }