| File: CompiledConverters\ColumnDefinitionCollectionTypeConverter.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 Mono.Cecil.Cil; using static Mono.Cecil.Cil.Instruction; using static Mono.Cecil.Cil.OpCodes; namespace Microsoft.Maui.Controls.XamlC { class ColumnDefinitionCollectionTypeConverter : ICompiledTypeConverter { public IEnumerable<Instruction> ConvertFromString(string value, ILContext context, BaseNode node) { var module = context.Body.Method.Module; if (!string.IsNullOrWhiteSpace(value)) { value = value.Trim(); var gridlengthconverter = new GridLengthTypeConverter(); var parts = value.Split(','); yield return Create(Ldc_I4, parts.Length); yield return Create(Newarr, module.ImportReference(context.Cache, ("Microsoft.Maui.Controls", "Microsoft.Maui.Controls", "ColumnDefinition"))); for (var i = 0; i < parts.Length; i++) { yield return Create(Dup); yield return Create(Ldc_I4, i); foreach (var instruction in gridlengthconverter.ConvertFromString(parts[i], context, node)) yield return instruction; yield return Create(Newobj, module.ImportCtorReference(context.Cache, type: ("Microsoft.Maui.Controls", "Microsoft.Maui.Controls", "ColumnDefinition"), parameterTypes: new[] { ("Microsoft.Maui", "Microsoft.Maui", "GridLength") })); yield return Create(Stelem_Ref); } yield return Create(Newobj, module.ImportCtorReference(context.Cache, type: ("Microsoft.Maui.Controls", "Microsoft.Maui.Controls", "ColumnDefinitionCollection"), paramCount: 1)); yield break; } throw new BuildException(BuildExceptionCode.Conversion, node, null, value, typeof(ColumnDefinitionCollection)); } } }