Team Ai
Datasetpublic

MegaBites-AI/Windows-powershell

sourceHugging Facemitupdated 6mo agoView on Hugging Face
0likes372downloads
CurrencyArgBuilder.cs54 linesDownload Raw Back to ComInterop
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