MegaBites-AI/Windows-powershell
0372
1// Licensed to the .NET Foundation under one or more agreements.2// The .NET Foundation licenses this file to you under the MIT license.3 4#pragma warning disable 618 // CurrencyWrapper is obsolete5 6using System;7using System.Diagnostics;8using System.Linq.Expressions;9using System.Runtime.InteropServices;10 11namespace System.Management.Automation.ComInterop12{13 internal sealed class CurrencyArgBuilder : SimpleArgBuilder14 {15 internal CurrencyArgBuilder(Type parameterType)16 : base(parameterType)17 {18 Debug.Assert(parameterType == typeof(CurrencyWrapper));19 }20 21 internal override Expression Marshal(Expression parameter)22 {23 // parameter.WrappedObject24 return Expression.Property(25 Helpers.Convert(base.Marshal(parameter), typeof(CurrencyWrapper)),26 nameof(CurrencyWrapper.WrappedObject)27 );28 }29 30 internal override Expression MarshalToRef(Expression parameter)31 {32 // Decimal.ToOACurrency(parameter.WrappedObject)33 return Expression.Call(34 typeof(decimal).GetMethod(nameof(decimal.ToOACurrency)),35 Marshal(parameter)36 );37 }38 39 internal override Expression UnmarshalFromRef(Expression value)40 {41 // Decimal.FromOACurrency(value)42 return base.UnmarshalFromRef(43 Expression.New(44 typeof(CurrencyWrapper).GetConstructor(new Type[] { typeof(decimal) }),45 Expression.Call(46 typeof(decimal).GetMethod(nameof(decimal.FromOACurrency)),47 value48 )49 )50 );51 }52 }53}54 