Boo.Lang.Compiler.Steps.EmitAssembly.ArgumentsForAttributeConstructor C# (CSharp) Метод

ArgumentsForAttributeConstructor() приватный Метод

private ArgumentsForAttributeConstructor ( IConstructor ctor, Boo.Lang.Compiler.Ast.ExpressionCollection args ) : object[]
ctor IConstructor
args Boo.Lang.Compiler.Ast.ExpressionCollection
Результат object[]
        object[] ArgumentsForAttributeConstructor(IConstructor ctor, ExpressionCollection args)
        {
            var varargs = ctor.AcceptVarArgs;
            var parameters = ctor.GetParameters();
            var result = new object[parameters.Length];
            var lastIndex = parameters.Length - 1;
            var fixedParameters = (varargs ? parameters.Take(lastIndex) : parameters);

            var i = 0;
            foreach (var parameter in fixedParameters)
            {
                result[i] = GetValue(parameter.Type, args[i]);
                ++i;
            }

            if (varargs)
            {
                var varArgType = parameters[lastIndex].Type.ElementType;
                result[lastIndex] = args.Skip(lastIndex).Select(e => GetValue(varArgType, e)).ToArray();
            }

            return result;
        }
EmitAssembly