public override object Math2Value(CLS_Content env, char code, object left, CLS_Content.Value right, out CLType returntype) { returntype = null; if (left is DeleEvent) { DeleEvent info = left as DeleEvent; Delegate calldele = null; if (right.value is DeleFunction) { calldele = CreateDelegate(env.environment, right.value as DeleFunction); } else if (right.value is DeleLambda) { calldele = CreateDelegate(env.environment, right.value as DeleLambda); } else if (right.value is Delegate) { calldele = right.value as Delegate; } if (code == '+') { info._event.AddEventHandler(info.source, calldele); return(null); } else if (code == '-') { info._event.AddEventHandler(info.source, calldele); return(null); } } else if (left is Delegate) { Delegate info = left as Delegate; Delegate calldele = null; if (right.value is DeleFunction) { calldele = CreateDelegate(env.environment, right.value as DeleFunction); } else if (right.value is DeleLambda) { calldele = CreateDelegate(env.environment, right.value as DeleLambda); } else if (right.value is Delegate) { calldele = right.value as Delegate; } if (code == '+') { Delegate.Combine(info, calldele); return(null); } else if (code == '-') { Delegate.Remove(info, calldele); } } return(new NotSupportedException()); }
public override object Math2Value(CLS_Content env, char code, object left, CLS_Content.Value right, out CLType returntype) { returntype = null; if (left is DeleEvent) { DeleEvent info = left as DeleEvent; Delegate calldele = null; //!--exist bug. /*if (right.value is DeleFunction) calldele = CreateDelegate(env.environment, right.value as DeleFunction); * else if (right.value is DeleLambda) calldele = CreateDelegate(env.environment, right.value as DeleLambda); * else if (right.value is Delegate) calldele = right.value as Delegate;*/ object rightValue = right.value; if (rightValue is DeleFunction) { if (code == '+') { calldele = CreateDelegate(env.environment, rightValue as DeleFunction); } else if (code == '-') { calldele = CreateDelegate(env.environment, rightValue as DeleFunction); } } else if (rightValue is DeleLambda) { if (code == '+') { calldele = CreateDelegate(env.environment, rightValue as DeleLambda); } else if (code == '-') { calldele = CreateDelegate(env.environment, rightValue as DeleLambda); } } else if (rightValue is Delegate) { calldele = rightValue as Delegate; } if (code == '+') { info._event.AddEventHandler(info.source, calldele); //if (!(rightValue is Delegate)) { // Dele_Map_Delegate.Map(rightValue as IDeleBase, calldele); //} return(info); } else if (code == '-') { info._event.RemoveEventHandler(info.source, calldele); //if (!(rightValue is Delegate)) { // Dele_Map_Delegate.Destroy(rightValue as IDeleBase); //} return(info); } } else if (left is Delegate || left == null) { Delegate info = left as Delegate; Delegate calldele = null; if (right.value is DeleFunction) { calldele = CreateDelegate(env.environment, right.value as DeleFunction); } else if (right.value is DeleLambda) { calldele = CreateDelegate(env.environment, right.value as DeleLambda); } else if (right.value is Delegate) { calldele = right.value as Delegate; } if (code == '+') { return(Delegate.Combine(info, calldele));; } else if (code == '-') { return(Delegate.Remove(info, calldele)); } } return(new NotSupportedException()); }