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.
 
 
 

24 lines
933 B

using System.Collections.Generic;
using System.Linq;
using Avalonia.Generators.Common;
using Avalonia.Generators.Common.Domain;
using Avalonia.Generators.Compiler;
using Microsoft.CodeAnalysis;
namespace Avalonia.Generators.Tests;
internal static class CompilationUtils
{
internal static IEnumerable<ResolvedName> ResolveNames(this IEnumerable<ResolvedXmlName> names, Compilation compilation, XamlXNameResolver nameResolver)
{
var compiler = MiniCompiler.CreateRoslyn(new RoslynTypeSystem(compilation), MiniCompiler.AvaloniaXmlnsDefinitionAttribute);
return names
.Select(xmlName =>
{
var clrType = compiler.ResolveXamlType(xmlName.XmlType);
return (clrType, nameResolver.ResolveName(clrType, xmlName.Name, xmlName.FieldModifier));
})
.Where(t => t.clrType.IsAvaloniaStyledElement())
.Select(t => t.Item2);
}
}