1 /* ****************************************************************************
3 * Copyright (c) Microsoft Corporation.
5 * This source code is subject to terms and conditions of the Microsoft Public License. A
6 * copy of the license can be found in the License.html file at the root of this distribution. If
7 * you cannot locate the Microsoft Public License, please send an email to
8 * dlr@microsoft.com. By using this source code in any fashion, you are agreeing to be bound
9 * by the terms of the Microsoft Public License.
11 * You must not remove this notice, or any other, from this software.
14 * ***************************************************************************/
15 using System; using Microsoft;
20 using System.Diagnostics;
22 using System.Linq.Expressions;
24 using Microsoft.Linq.Expressions;
28 namespace System.Dynamic {
30 namespace Microsoft.Scripting {
33 /// SimpleArgBuilder produces the value produced by the user as the argument value. It
34 /// also tracks information about the original parameter and is used to create extended
35 /// methods for params arrays and param dictionary functions.
37 internal class SimpleArgBuilder : ArgBuilder {
38 private readonly Type _parameterType;
40 internal SimpleArgBuilder(Type parameterType) {
41 _parameterType = parameterType;
44 internal Type ParameterType {
45 get { return _parameterType; }
48 internal override Expression Marshal(Expression parameter) {
49 Debug.Assert(parameter != null);
50 return Helpers.Convert(parameter, _parameterType);
53 internal override Expression UnmarshalFromRef(Expression newValue) {
54 Debug.Assert(newValue != null && newValue.Type.IsAssignableFrom(_parameterType));
56 return base.UnmarshalFromRef(newValue);