CompilationUtils.cs 933 B

123456789101112131415161718192021222324
  1. using System.Collections.Generic;
  2. using System.Linq;
  3. using Avalonia.Generators.Common;
  4. using Avalonia.Generators.Common.Domain;
  5. using Avalonia.Generators.Compiler;
  6. using Microsoft.CodeAnalysis;
  7. namespace Avalonia.Generators.Tests;
  8. internal static class CompilationUtils
  9. {
  10. internal static IEnumerable<ResolvedName> ResolveNames(this IEnumerable<ResolvedXmlName> names, Compilation compilation, XamlXNameResolver nameResolver)
  11. {
  12. var compiler = MiniCompiler.CreateRoslyn(new RoslynTypeSystem(compilation), MiniCompiler.AvaloniaXmlnsDefinitionAttribute);
  13. return names
  14. .Select(xmlName =>
  15. {
  16. var clrType = compiler.ResolveXamlType(xmlName.XmlType);
  17. return (clrType, nameResolver.ResolveName(clrType, xmlName.Name, xmlName.FieldModifier));
  18. })
  19. .Where(t => t.clrType.IsAvaloniaStyledElement())
  20. .Select(t => t.Item2);
  21. }
  22. }