A cross-platform UI framework for .NET
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 

31 lines
843 B

using System.Collections.Generic;
using System.Linq;
using Avalonia.NameGenerator.Domain;
using XamlX.TypeSystem;
namespace Avalonia.NameGenerator.Generator;
internal class OnlyPropertiesCodeGenerator : ICodeGenerator
{
public string GenerateCode(string className, string nameSpace, IXamlType xamlType, IEnumerable<ResolvedName> names)
{
var namedControls = names
.Select(info => " " +
$"{info.FieldModifier} global::{info.TypeName} {info.Name} => " +
$"this.FindControl<global::{info.TypeName}>(\"{info.Name}\");")
.ToList();
var lines = string.Join("\n", namedControls);
return $@"// <auto-generated />
using Avalonia.Controls;
namespace {nameSpace}
{{
partial class {className}
{{
{lines}
}}
}}
";
}
}