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;
21 using System.Linq.Expressions;
23 using Microsoft.Linq.Expressions;
27 namespace System.Dynamic {
29 namespace Microsoft.Scripting {
31 internal class ConvertArgBuilder : SimpleArgBuilder {
32 private readonly Type _marshalType;
34 internal ConvertArgBuilder(Type parameterType, Type marshalType)
35 : base(parameterType) {
36 _marshalType = marshalType;
39 internal override Expression Marshal(Expression parameter) {
40 parameter = base.Marshal(parameter);
41 return Expression.Convert(parameter, _marshalType);
44 internal override Expression UnmarshalFromRef(Expression newValue) {
45 return base.UnmarshalFromRef(Expression.Convert(newValue, ParameterType));