| File: CompiledConverters\PointTypeConverter.cs | Web Access |
| Project: src\src\Controls\src\Build.Tasks\Controls.Build.Tasks.csproj (Microsoft.Maui.Controls.Build.Tasks) |
using System.Collections.Generic; using Microsoft.Maui.Controls.Build.Tasks; using Microsoft.Maui.Controls.Xaml; using Microsoft.Maui.Graphics; using Mono.Cecil; using Mono.Cecil.Cil; namespace Microsoft.Maui.Controls.XamlC; class PointTypeConverter : ICompiledTypeConverter { public IEnumerable<Instruction> ConvertFromString(string value, ILContext context, BaseNode node) { var module = context.Body.Method.Module; if (!string.IsNullOrEmpty(value) && Point.TryParse(value.Trim(), out var point)) { foreach (var instruction in CreatePoint(context, module, point)) { yield return instruction; } yield break; } throw new BuildException(BuildExceptionCode.Conversion, node, null, value, typeof(Point)); } public IEnumerable<Instruction> CreatePoint(ILContext context, ModuleDefinition module, Point point) { yield return Instruction.Create(OpCodes.Ldc_R8, point.X); yield return Instruction.Create(OpCodes.Ldc_R8, point.Y); yield return Instruction.Create(OpCodes.Newobj, module.ImportCtorReference(context.Cache, ("Microsoft.Maui.Graphics", "Microsoft.Maui.Graphics", "Point"), parameterTypes: new[] { ("mscorlib", "System", "Double"), ("mscorlib", "System", "Double")})); } }