Пример #1
0
        /// <inheritdoc/>
        public (string nameSpace, string name) Generate(
            IWriterSelector writerSelector,
            IInterfaceDeclaration itfDeclaration,
            string implName)
        {
            if (itfDeclaration == null)
            {
                throw new ArgumentNullException(nameof(itfDeclaration), $"The argument {nameof(itfDeclaration)} was null.");
            }

            var(location, nameSpace) = this.locator.ComputeTargetLocation(itfDeclaration.DeclarationNameSpace);

            this.generator.Generate(location, implName, writer =>
            {
                var generatorWalker = new ImplementationGeneratorWalker(
                    writer,
                    this.itfPattern,
                    this.implPattern,
                    itfDeclaration,
                    implName,
                    nameSpace,
                    writerSelector);

                generatorWalker.Visit(this.implPattern.SyntaxNodeProvider.SyntaxNode.SyntaxTree.GetRoot());
            });
            return(nameSpace, implName);
        }
Пример #2
0
 /// <summary>
 /// Initializes a new instance of the <see cref="ImplementationGeneratorWalker"/> class.
 /// </summary>
 /// <param name="writer">The writer where to write generated code.</param>
 /// <param name="itfPattern">Interface pattern.</param>
 /// <param name="implPattern">Implementation pattern.</param>
 /// <param name="itfDeclaration">Interface declaration to implement.</param>
 /// <param name="implName">Implementation name.</param>
 /// <param name="implNameSpace">Implementation name space.</param>
 /// <param name="writerSelector">Writer selector.</param>
 /// <param name="textSubstitutionHandler">Optional text substitution handler.</param>
 public ImplementationGeneratorWalker(
     TextWriter writer,
     IInterfaceDeclaration itfPattern,
     IGenericDeclaration <SyntaxNode> implPattern,
     IInterfaceDeclaration itfDeclaration,
     string implName,
     string implNameSpace,
     IWriterSelector writerSelector,
     Func <string, string> textSubstitutionHandler = null)
 {
     this.writer                  = writer;
     this.itfPattern              = itfPattern;
     this.implPattern             = implPattern;
     this.declaration             = itfDeclaration;
     this.implName                = implName;
     this.implNameSpace           = implNameSpace;
     this.writerSelector          = writerSelector;
     this.textSubstitutionHandler = textSubstitutionHandler ?? SameText;
 }