Пример #1
0
    private static void BuildType(INamedTypeSymbol source, INamedTypeSymbol destination, ImmutableArray <string> propertyNames,
                                  Compilation compilation, IndentedTextWriter indentWriter, NamespaceGatherer namespaces)
    {
        indentWriter.WriteLine($"public static partial class {source.Name}MapToExtensions");
        indentWriter.WriteLine("{");
        indentWriter.Indent++;

        var constructors = destination.Constructors.Where(_ => _.DeclaredAccessibility == Accessibility.Public ||
                                                          destination.ContainingAssembly.ExposesInternalsTo(compilation.Assembly) && _.DeclaredAccessibility == Accessibility.Friend).ToArray();

        for (var i = 0; i < constructors.Length; i++)
        {
            var constructor = constructors[i];
            MappingBuilder.BuildMapExtensionMethod(source, destination, propertyNames, constructor, namespaces, indentWriter);

            if (i < constructors.Length - 1)
            {
                indentWriter.WriteLine();
            }
        }

        indentWriter.Indent--;
        indentWriter.WriteLine("}");
    }