コード例 #1
0
    public IReadOnlyList <GeneratedPartialClass> GenerateNameReferences(IEnumerable <AdditionalText> additionalFiles)
    {
        var resolveViews =
            from file in additionalFiles
            where (file.Path.EndsWith(".xaml") ||
                   file.Path.EndsWith(".paml") ||
                   file.Path.EndsWith(".axaml")) &&
            _pathPattern.Matches(file.Path)
            let xaml                       = file.GetText() !.ToString()
                                  let view = _classes.ResolveView(xaml)
                                             where view != null && _namespacePattern.Matches(view.Namespace)
                                             select view;

        var query =
            from view in resolveViews
            let names                       = _names.ResolveNames(view.Xaml)
                                   let code = _code.GenerateCode(view.ClassName, view.Namespace, view.XamlType, names)
                                              let fileName = $"{view.ClassName}.g.cs"
                                                             select new GeneratedPartialClass(fileName, code);

        return(query.ToList());
    }