Exemple #1
0
		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;
		}