Esempio n. 1
0
        public string GetSourceCode()
        {
            var writer = new IndentedTextWriter2(2, false);
            var sng    = new ShortTypeNameGenerator();

            foreach (var methodProduct in MethodProducts)
            {
                methodProduct.Write(writer, sng);
            }

            return($@"
{sng.GetCombinedUsings()}

namespace {BindToType.ContainingNamespace.ToFullDisplayString()}
{{
    public partial class {BindToType.Name} : {BindFromType.ToGlobalDisplayString()}
    {{
        {Unknowns.Join(u => $"private readonly {u.Type!.ToGlobalDisplayString()} {u.Name};")}

        public {BindToType.Name}(
            {Unknowns.Join(u => $"{u.Type!.ToGlobalDisplayString()} {u.Name}", ",")}
            )
        {{
            {Unknowns.Join(u => $"this.{u.Name} = {u.Name};")}
        }}

        {writer.GetResultString()}
    }}
}}
");
        }
Esempio n. 2
0
        public string GetSourceCode()
        {
            var writer = new IndentedTextWriter2(2, false);
            var sng    = new ShortTypeNameGenerator();

            foreach (var methodProduct in MembersProduct)
            {
                methodProduct.Write(writer, sng);
            }

            var compilationUnit = DpdtInject.Generator.Core.Properties.Resource.CarcassProxy;

            var fixedCompilationUnit = compilationUnit
                                       .ReplaceLineStartsWith(
                "namespace",
                $"namespace {BindToType.ContainingNamespace.ToFullDisplayString()}"
                )
                                       .ReplaceLineStartsWith(
                "using BindFromType",
                $""
                )
                                       .ReplaceLineStartsWith(
                "using SessionSaver",
                $""
                )
                                       .CheckAndReplace(
                "//PROXYPRODUCER: additonal usings",
                sng.GetCombinedUsings()
                )
                                       .CheckAndReplace(
                nameof(CarcassProxy),
                BindToType.Name
                )
                                       .CheckAndReplace(
                "BindFromType",
                BindFromType.ToGlobalDisplayString()
                )
                                       .CheckAndReplace(
                "SessionSaver",
                _sessionSaverType.ToGlobalDisplayString()
                )
                                       .CheckAndReplace(
                "//PROXYPRODUCER: put methods here",
                writer.GetResultString()
                )
            ;

            return(fixedCompilationUnit);
        }