示例#1
0
        public override void Evaluate(IScriptContext context)
        {
            _typeExpr.Evaluate(context);
            var type = (Type)context.Result;

            _callExpr.Evaluate(context);
            var arguments = (object[])context.Result;

            context.Result = RuntimeHost.Binder.BindToConstructor(type, arguments);
        }
示例#2
0
        //TODO: Refactor
        public override void Evaluate(IScriptContext context)
        {
            _constrExpr.Evaluate(context);
            var type = (Type)context.Result;

            _arrRank.Evaluate(context);
            var rank = Scripting.SSharp.CustomFunctions.ArrayFunc.FunctionDefinition.Invoke(null, (object[])context.Result);

            //(int)Convert.ChangeType(((object[])context.Result)[0], typeof(int), CultureInfo.CurrentCulture.NumberFormat);

            context.Result = Array.CreateInstance(type, (int[])rank);

            //long[] longRank = rank as long[];
            //if (longRank != null) {
            //    context.Result = Array.CreateInstance(type, longRank);
            //    return;
            //}
        }