Exemplo n.º 1
0
        public virtual IPara GetTargetPara(IEventArgs args, IPara source)
        {
            IPara replace = ExpSetParser.GetReplaceValue(unitPara.GetPara(), args);

            if (replace != null)
            {
                return(replace);
            }
            IParable p1 = args.GetUnit(unitPara.GetUnit());

            if (p1 != null)
            {
                IPara p = unitPara.GetPara(args);
                if (p == null)
                {
                    p = source.Initial(op, unitPara.GetPara());
                }
                return(p);
            }
            else
            {
                if (!StringUtil.IsNullOrEmpty(unitPara.GetUnit()))
                {
                    return(source.Initial(op, unitPara.GetUnit() + "." + unitPara.GetPara()));
                }
                else
                {
                    return(source.Initial(op, unitPara.GetPara()));
                }
            }
        }
Exemplo n.º 2
0
        private void SetArg(FuncArg arg, IList <ArgValue> funcArgs, IEventArgs args)
        {
            ArgValue fa = GetArgValue(arg, funcArgs, args);

            if (fa != null)
            {
                IPara para = ParaUtil.GetPara(arg.GetType());
                if (para != null)
                {
                    try
                    {
                        IPara old = new ParaExp(fa.GetValue()).GetSourcePara(args);
                        if (old != null)
                        {
                            if (old.GetValue() != null)
                            {
                                para = para.Initial("=", old.GetValue().ToString());
                            }
                            else
                            {
                                para = para.Initial("=", string.Empty);
                            }
                        }
                        else
                        {
                            para = para.Initial("=", FreeUtil.ReplaceNumber(fa.GetValue(), args));
                        }
                    }
                    catch (Exception)
                    {
                        para = para.Initial("=", FreeUtil.ReplaceNumber(fa.GetValue(), args));
                    }
                    para.SetName("arg_" + arg.GetName());
                    args.GetDefault().GetParameters().TempUse(para);
                    IPara p = (IPara)para.Borrow();
                    p.SetName(arg.GetName());
                    if (para.GetValue() != null)
                    {
                        p.SetValue("=", para);
                    }
                    args.GetDefault().GetParameters().TempUse(p);
                    FreeLog.FuncArg(p.ToString());
                }
                else
                {
                    // 非简单变量
                    ((BaseEventArgs)args).TempUse(arg.GetName(), args.GetUnit(fa.GetValue()));
                }
            }
        }