コード例 #1
0
        void AddPluginObjsConstructor(RoslynCodeBuilder roslynCodeBuilder)
        {
            string paramsLine = GetWrappedObjConstructorParamStr();

            if (paramsLine.IsNullOrEmpty())
            {
                return;
            }

            roslynCodeBuilder.PushRegion("Plugins Constructor");

            roslynCodeBuilder.AddLine($"public {this.ClassName}({paramsLine})");
            roslynCodeBuilder.Push();

            foreach (PluginInfo pluginInfo in PluginInfos)
            {
                pluginInfo.AddPluginInitInConstructorCode(roslynCodeBuilder);
                roslynCodeBuilder.AddLine();
            }

            roslynCodeBuilder.AddLine($"{INIT_METHOD_NAME}()", true);

            roslynCodeBuilder.Pop(true);

            roslynCodeBuilder.PopRegion();
        }
コード例 #2
0
ファイル: TypeConfig.cs プロジェクト: sachabarber/NP.Roxy
        void AddWrappedObjsConstructor(RoslynCodeBuilder roslynCodeBuilder)
        {
            string paramsLine = GetWrappedObjConstructorParamStr();

            if (paramsLine.IsNullOrEmpty())
            {
                return;
            }

            roslynCodeBuilder.PushRegion("Wrappers Constructor");

            roslynCodeBuilder.AddLine($"public {this.ClassName}({paramsLine})");
            roslynCodeBuilder.Push();

            foreach (WrappedObjInfo wrapObjInfo in _wrappedObjInfos)
            {
                string assignmentLine =
                    $"{wrapObjInfo.WrappedObjPropName} = {wrapObjInfo.WrappedObjClassName.FirstCharToLowerCase(true)}";

                roslynCodeBuilder.AddLine(assignmentLine, true);
            }
            roslynCodeBuilder.Pop(true);

            roslynCodeBuilder.PopRegion();
        }
コード例 #3
0
        public void AddCallToPluginObjConstructor
        (
            RoslynCodeBuilder roslynCodeBuilder,
            Dictionary <string, string> sharedPluginsNameMap
        )
        {
            roslynCodeBuilder.AddText($" new {this.ClassName}(");

            bool notFirst = false;

            foreach (PluginInfo pluginInfo in PluginInfos)
            {
                if (notFirst)
                {
                    roslynCodeBuilder.AddText(", ");
                }
                else
                {
                    notFirst = true;
                }

                string pluginPropName = pluginInfo.PluginPropName;

                if (!sharedPluginsNameMap.TryGetValue(pluginPropName, out string valToAdd))
                {
                    valToAdd = "null";
                }

                roslynCodeBuilder.AddText(valToAdd);
            }

            roslynCodeBuilder.AddText(");");

            roslynCodeBuilder.AddLine();
        }
コード例 #4
0
        public void Build(IPropertySymbol symbol, RoslynCodeBuilder roslynCodeBuilder)
        {
            string firePropertyChangedStr =
                $"this.OnPropertyChanged(nameof({symbol.Name}));";

            roslynCodeBuilder.AddPropWithBackingStore(symbol, null, firePropertyChangedStr);
        }
コード例 #5
0
 protected override void BuildImpl(IEventSymbol wrapperSymbol, RoslynCodeBuilder roslynCodeBuilder)
 {
     roslynCodeBuilder.AddEventDefinitionAndEventInvocationMethod
     (
         this.WrapperSymbol,
         this.IndexInputParamToReplaceByThis
     );
 }
コード例 #6
0
        public void AddInit(RoslynCodeBuilder roslynCodeBuilder)
        {
            if (!HasInit)
            {
                return;
            }

            roslynCodeBuilder.AddAssignCoreObj(WrapperSymbolName, TheInitTypeSymbol);
        }
コード例 #7
0
ファイル: TypeConfig.cs プロジェクト: sachabarber/NP.Roxy
 void OpenClassDeclaration(RoslynCodeBuilder roslynCodeBuilder)
 {
     roslynCodeBuilder.AddClass
     (
         ClassName,
         null,
         SuperClassTypeSymbol,
         AllImplementedInterfaces.ToArray()
     );
 }
コード例 #8
0
        public override void Build(IEventSymbol symbol, RoslynCodeBuilder roslynCodeBuilder)
        {
            base.Build(symbol, roslynCodeBuilder);

            roslynCodeBuilder.AddEmptyLine();

            roslynCodeBuilder.AddLine("protected void OnPropertyChanged(string propName)");
            roslynCodeBuilder.Push();
            roslynCodeBuilder.AddLine($"this.PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(propName))", true);
            roslynCodeBuilder.Pop();
        }
コード例 #9
0
        internal void Build(RoslynCodeBuilder roslynCodeBuilder)
        {
            if (NoWrappers || this.WrappedMembers.IsNullOrEmpty())
            {
                BuildIfNoWrappers(roslynCodeBuilder);

                return;
            }

            BuildImpl(this.WrapperSymbol, roslynCodeBuilder);
        }
コード例 #10
0
        private void AddInit(RoslynCodeBuilder roslynCodeBuilder)
        {
            roslynCodeBuilder.PushRegion("Init Method");

            roslynCodeBuilder.AddLine($"void {INIT_METHOD_NAME}()");
            roslynCodeBuilder.Push();

            this.PropBuilderInfos.DoForEach(propBuilderInfo => propBuilderInfo.AddInit(roslynCodeBuilder));

            roslynCodeBuilder.Pop();

            roslynCodeBuilder.PopRegion();
        }
コード例 #11
0
        protected virtual void BuildIfNoWrappers(RoslynCodeBuilder roslynCodeBuilder)
        {
            if (TheCodeBuilder != null)
            {
                TheCodeBuilder.Build(this.WrapperSymbol, roslynCodeBuilder);
                return;
            }

            if (DefaultCodeBuilder != null)
            {
                DefaultCodeBuilder.Build(this.WrapperSymbol, roslynCodeBuilder);
            }
        }
コード例 #12
0
        static void Main(string[] args)
        {
            MSBuildWorkspace workspace = MSBuildWorkspace.Create();

            Project proj = workspace.OpenProjectAsync("../../../TestProj/TestProj.csproj").Result;

            Compilation compilation = proj.GetCompilationAsync().Result;

            INamedTypeSymbol myClass     = compilation.GetTypeByMetadataName("TestProj.MyClass");
            INamedTypeSymbol myInterface = compilation.GetTypeByMetadataName("TestProj.IMyInterface");

            string fullNamespace = myClass.GetFullNamespace();

            IEnumerable <ISymbol> allMembers = myClass.GetMembers();

            IMethodSymbol myMethod = myClass.GetMemberByName <IMethodSymbol>(nameof(MyClass.MyMethod));

            IPropertySymbol myProp = myClass.GetMemberByName <IPropertySymbol>(nameof(MyClass.MyInt));

            string methodSignature = myMethod.GetMethodSignature();

            IPropertySymbol intProp = myInterface.GetMemberByName <IPropertySymbol>(nameof(IMyInterface.TheInt));
            IPropertySymbol strProp = myInterface.GetMemberByName <IPropertySymbol>(nameof(IMyInterface.TheStr));

            RoslynCodeBuilder roslynCodeBuilder = new RoslynCodeBuilder();

            RoslynAnalysisAndGenerationUtils.TheNamespaces = roslynCodeBuilder.AllNamespaces;
            RoslynAnalysisAndGenerationUtils.TheAssemblies = roslynCodeBuilder.AllAssemblies;

            roslynCodeBuilder.AddNamespace("NP.Generated");
            roslynCodeBuilder.AddClass("MyClass1", null, null, myInterface);

            roslynCodeBuilder.AddAutoProp(intProp.Name, intProp.Type as INamedTypeSymbol);
            roslynCodeBuilder.AddAutoProp(strProp.Name, strProp.Type as INamedTypeSymbol);

            //roslynCodeBuilder.AddField("_myField", myClass);

            //roslynCodeBuilder.AddPropWithBackingStore("MyProp", myClass);

            //roslynCodeBuilder.AddPropWrapper("_propField", myProp);

            //roslynCodeBuilder.AddPropOpening("MyField", myClass);
            //roslynCodeBuilder.Pop();

            roslynCodeBuilder.AddMethodWrapper("_propField", myMethod);


            roslynCodeBuilder.PopAll();

            Console.WriteLine(roslynCodeBuilder.ToString());
        }
コード例 #13
0
        protected override void BuildImpl(IMethodSymbol methodWrapperSymbol, RoslynCodeBuilder roslynCodeBuilder)
        {
            bool shouldOverride = (!ForceNoOverride) && methodWrapperSymbol.ShouldOverride();

            roslynCodeBuilder.AddMethodOpeningFromSymbolOnly(methodWrapperSymbol, shouldOverride);

            string returnVarName   = "result";
            string firstLineInsert = "";

            if (!methodWrapperSymbol.ReturnsVoid)
            {
                string returnTypeStr = (methodWrapperSymbol.ReturnType as INamedTypeSymbol).GetFullTypeString();

                roslynCodeBuilder.AddLine($"{returnTypeStr} {returnVarName} = default({returnTypeStr})", true);

                firstLineInsert = $"{returnVarName} = ";
            }

            if (this.IncludeBaseVirtualInOverride)
            {
                roslynCodeBuilder.AddEmptyLine();
                roslynCodeBuilder.AddMethodCall(WrapperSymbol, $"base.{WrapperSymbolName}");
            }

            bool isFirst = true;

            foreach (MemberMapInfo memberMap in this.WrappedMembers)
            {
                memberMap.AddCheckForSharedLine(roslynCodeBuilder);
                roslynCodeBuilder.Push();
                roslynCodeBuilder.AddLine();
                if (isFirst)
                {
                    roslynCodeBuilder.AddText(firstLineInsert);
                    isFirst = false;
                }

                memberMap.AddPluginMethodLine(this.WrapperSymbol, roslynCodeBuilder);

                roslynCodeBuilder.Pop();
            }

            if (!methodWrapperSymbol.ReturnsVoid)
            {
                roslynCodeBuilder.AddReturnVar(returnVarName);
            }

            roslynCodeBuilder.Pop(true);
        }
コード例 #14
0
ファイル: TypeConfig.cs プロジェクト: sachabarber/NP.Roxy
        private void AddDefaultConstructor(RoslynCodeBuilder roslynCodeBuilder)
        {
            roslynCodeBuilder.PushRegion("Default Constructor");

            roslynCodeBuilder.AddDefaultConstructorOpening(this.ClassName);

            foreach (WrappedObjInfo wrappedObj in _wrappedObjInfos)
            {
                wrappedObj.AddDefaultConstructor(roslynCodeBuilder);
            }

            roslynCodeBuilder.Pop();

            roslynCodeBuilder.PopRegion();
        }
コード例 #15
0
        private void AddMethodWraps(RoslynCodeBuilder roslynCodeBuilder)
        {
            if (MethodBuilderInfos.IsNullOrEmpty())
            {
                return;
            }

            roslynCodeBuilder.PushRegion("Wrapped Methods");

            foreach (WrapperMemberBuilderInfo <IMethodSymbol> methodBuilderInfo in this.MethodBuilderInfos)
            {
                methodBuilderInfo.Build(roslynCodeBuilder);
            }

            roslynCodeBuilder.PopRegion();
        }
コード例 #16
0
ファイル: TypeConfig.cs プロジェクト: sachabarber/NP.Roxy
        private void AddWrappedClasses(RoslynCodeBuilder roslynCodeBuilder)
        {
            if (this._wrappedObjInfos.IsNullOrEmpty())
            {
                return;
            }

            roslynCodeBuilder.PushRegion("Wrapped Classes");

            foreach (WrappedObjInfo wrappedClassInfo in this._wrappedObjInfos)
            {
                wrappedClassInfo.AddWrappedClass(roslynCodeBuilder);
            }

            roslynCodeBuilder.PopRegion();
        }
コード例 #17
0
        private void AddPlugins(RoslynCodeBuilder roslynCodeBuilder)
        {
            if (this.PluginInfos.IsNullOrEmpty())
            {
                return;
            }

            roslynCodeBuilder.PushRegion("Plugins");

            foreach (PluginInfo wrappedClassInfo in this.PluginInfos)
            {
                wrappedClassInfo.AddPluginClass(roslynCodeBuilder);
            }

            roslynCodeBuilder.PopRegion();
        }
コード例 #18
0
        private void ImplementEvents(RoslynCodeBuilder roslynCodeBuilder)
        {
            if (this.EventBuilderInfos.IsNullOrEmpty())
            {
                return;
            }

            roslynCodeBuilder.PushRegion("The Wrapped Events Definitions");

            foreach (var eventBuilder in this.EventBuilderInfos)
            {
                eventBuilder.Build(roslynCodeBuilder);
            }

            roslynCodeBuilder.PopRegion();
        }
コード例 #19
0
        private void AddPropWraps(RoslynCodeBuilder roslynCodeBuilder)
        {
            if (PropBuilderInfos.IsNullOrEmpty())
            {
                return;
            }

            roslynCodeBuilder.PushRegion("Generated Properties");

            foreach (PropertyWrapperMemberBuilderInfo propBuilderInfo in this.PropBuilderInfos)
            {
                propBuilderInfo.Build(roslynCodeBuilder);
            }

            roslynCodeBuilder.PopRegion();
        }
コード例 #20
0
        protected virtual string GenerateCode()
        {
            Compilation compilation = this.TheCompilation;

            SetMissingMaps();

            SetWrappedMembers();

            RoslynCodeBuilder roslynCodeBuilder = new RoslynCodeBuilder();

            RoslynAnalysisAndGenerationUtils.TheNamespaces =
                roslynCodeBuilder.AllNamespaces;

            RoslynAnalysisAndGenerationUtils.TheNamespaces.Add("NP.Utilities");
            RoslynAnalysisAndGenerationUtils.TheNamespaces.Add("NP.Roxy");
            RoslynAnalysisAndGenerationUtils.TheNamespaces.Add("NP.Roxy.Attributes");

            RoslynAnalysisAndGenerationUtils.InitTypeNamespace <Action <int> >();

            roslynCodeBuilder.AddNamespace(AssemblerNames.GENERATED_NAMESPACE_NAME);

            OpenClassDeclaration(roslynCodeBuilder);

            AddStaticCoreReference(roslynCodeBuilder);

            ImplementEvents(roslynCodeBuilder);

            AddPlugins(roslynCodeBuilder);

            //AddSharedProps(roslynCodeBuilder);

            AddInit(roslynCodeBuilder);

            AddDefaultConstructor(roslynCodeBuilder);

            AddPluginObjsConstructor(roslynCodeBuilder);

            AddPropWraps(roslynCodeBuilder);

            AddMethodWraps(roslynCodeBuilder);

            roslynCodeBuilder.PopAll();

            TheGeneratedCode = roslynCodeBuilder.ToStr();

            return(TheGeneratedCode);
        }
コード例 #21
0
        void OpenClassDeclaration(RoslynCodeBuilder roslynCodeBuilder)
        {
            INamedTypeSymbol[] allSymbols = { ImplementorTypeSymbol, TypeToImplementSymbol };

            INamedTypeSymbol firstSymbol = allSymbols.FirstOrDefault(symb => symb.IsClass()) ?? ImplementorTypeSymbol;

            INamedTypeSymbol[] otherSymbols = allSymbols.Except(firstSymbol.ToCollection()).ToArray();

            roslynCodeBuilder.AddClass
            (
                ClassName,
                null,
                firstSymbol.GetNullForNoType(TheCompilation),
                true,
                otherSymbols
            );
        }
コード例 #22
0
        internal void Build(RoslynCodeBuilder roslynCodeBuilder)
        {
            if (this.WrappedMembers.IsNullOrEmpty())
            {
                if (TheCodeBuilder != null)
                {
                    TheCodeBuilder.Build(this.WrapperSymbol, roslynCodeBuilder);
                    return;
                }

                if (DefaultCodeBuilder != null)
                {
                    DefaultCodeBuilder.Build(this.WrapperSymbol, roslynCodeBuilder);
                }

                return;
            }

            BuildImpl(this.WrapperSymbol, roslynCodeBuilder);
        }
コード例 #23
0
        private void AddDefaultConstructor(RoslynCodeBuilder roslynCodeBuilder)
        {
            roslynCodeBuilder.PushRegion("Constructor");

            roslynCodeBuilder
            .AddConstructorOpening
            (
                this.ClassName,
                Accessibility.Public
            );

            foreach (PluginInfo wrappedObj in PluginInfos)
            {
                wrappedObj.AddPluginDefaultConstructorInitialization(roslynCodeBuilder);
            }

            roslynCodeBuilder.AddLine($"{INIT_METHOD_NAME}()", true);

            roslynCodeBuilder.Pop();

            roslynCodeBuilder.PopRegion();
        }
コード例 #24
0
 public void Build(IPropertySymbol symbol, RoslynCodeBuilder roslynCodeBuilder)
 {
     roslynCodeBuilder.AddDelegatesCallingProp(symbol);
 }
コード例 #25
0
 public void Build(IMethodSymbol symbol, RoslynCodeBuilder roslynCodeBuilder)
 {
     roslynCodeBuilder.AddDelegateCallingMethod(symbol);
 }
コード例 #26
0
 protected abstract void BuildImpl
 (
     TSymbol wrapperSymbol,
     RoslynCodeBuilder roslynCodeBuilder
 );
コード例 #27
0
        protected override void BuildImpl(IMethodSymbol methodWrapperSymbol, RoslynCodeBuilder roslynCodeBuilder)
        {
            roslynCodeBuilder.AddMethodOpeningFromSymbolOnly(methodWrapperSymbol);

            string returnVarName   = "result";
            string firstLineInsert = "";

            if (!methodWrapperSymbol.ReturnsVoid)
            {
                firstLineInsert =
                    (methodWrapperSymbol.ReturnType as INamedTypeSymbol).GetFullTypeString() + $" {returnVarName} = ";
            }

            if (this.IncludeBaseVirtualInOverride)
            {
                roslynCodeBuilder.AddEmptyLine();
                roslynCodeBuilder.AddMethodCall(WrapperSymbol, $"base.{WrapperSymbolName}");
            }

            bool isFirst = true;

            foreach (MemberMapInfo memberMap in this.WrappedMembers)
            {
                roslynCodeBuilder.AddEmptyLine();
                if (isFirst)
                {
                    roslynCodeBuilder.AddText(firstLineInsert);
                    isFirst = false;
                }

                IMethodSymbol wrappedMethodSymbol = memberMap.TheWrappedSymbol as IMethodSymbol;

                if (memberMap.IsNonPublic)
                {
                    if (memberMap.AllowNonPublic)
                    {
                        roslynCodeBuilder
                        .AddNonPublicMethodCall
                        (
                            WrapperSymbol,
                            memberMap.WrappedObjPropName,
                            memberMap.WrappedMemberName,
                            wrappedMethodSymbol
                        );
                    }
                }
                else
                {
                    if (memberMap.TheWrappedSymbol.IsStatic)
                    {
                        roslynCodeBuilder.AddStaticMethodCall
                        (
                            WrapperSymbol,
                            memberMap.WrappedObjPropName,
                            memberMap.WrappedClassMemberFullName);
                    }
                    else
                    {
                        roslynCodeBuilder.AddMethodCall
                        (
                            WrapperSymbol,
                            memberMap.WrappedClassMemberFullName);
                    }
                }
            }

            if (!methodWrapperSymbol.ReturnsVoid)
            {
                roslynCodeBuilder.AddReturnVar(returnVarName);
            }

            roslynCodeBuilder.Pop(true);
        }
コード例 #28
0
        protected override void BuildImpl(IPropertySymbol propertyWrapperSymbol, RoslynCodeBuilder roslynCodeBuilder)
        {
            Accessibility propAccessibility = propertyWrapperSymbol.DeclaredAccessibility;

            roslynCodeBuilder.AddPropOpening
            (
                propertyWrapperSymbol.Name,
                propertyWrapperSymbol.Type as INamedTypeSymbol,
                propertyWrapperSymbol.DeclaredAccessibility,
                propertyWrapperSymbol.ShouldOverride()
            );

            if (propertyWrapperSymbol.GetMethod != null)
            {
                Accessibility getterAccessibility = propertyWrapperSymbol.GetMethod.DeclaredAccessibility;

                if (getterAccessibility == propAccessibility)
                {
                    getterAccessibility = Accessibility.NotApplicable;
                }

                roslynCodeBuilder.OpenPropGetter(getterAccessibility);

                MemberMapInfo firstMemberMap =
                    this.WrappedMembers
                    .FirstOrDefault(member => (!member.IsNonPublic));

                if (firstMemberMap == null)
                {
                    firstMemberMap = this.WrappedMembers.First();
                }

                if (firstMemberMap.IsNonPublic)
                {
                    if (firstMemberMap.AllowNonPublic)
                    {
                        string returnType = (propertyWrapperSymbol.Type as INamedTypeSymbol).GetFullTypeString();
                        roslynCodeBuilder.AddLine($"return ({returnType}) {firstMemberMap.WrappedObjPropName}.GetPropValue(\"{firstMemberMap.WrappedMemberName}\", true)", true);
                    }
                }
                else
                {
                    string wrappedMemberStr = firstMemberMap.WrappedClassMemberFullName;

                    roslynCodeBuilder.AddReturnVar(wrappedMemberStr);
                }
                roslynCodeBuilder.Pop();
            }

            if (propertyWrapperSymbol.SetMethod != null)
            {
                Accessibility setterAccessibility = propertyWrapperSymbol.SetMethod.DeclaredAccessibility;

                if (setterAccessibility == propAccessibility)
                {
                    setterAccessibility = Accessibility.NotApplicable;
                }

                roslynCodeBuilder.OpenPropSetter(setterAccessibility);

                if (this.IncludeBaseVirtualInOverride)
                {
                    roslynCodeBuilder.AddSettingValue($"base.{WrapperSymbolName}");
                }

                foreach (MemberMapInfo memberMap in this.WrappedMembers)
                {
                    if (memberMap.IsNonPublic)
                    {
                        if (memberMap.AllowNonPublic)
                        {
                            roslynCodeBuilder.AddLine($"{memberMap.WrappedObjPropName}.SetPropValue(\"{memberMap.WrappedMemberName}\", value, true)", true);
                        }
                    }
                    else
                    {
                        string wrappedMemberStr = memberMap.WrappedClassMemberFullName;
                        roslynCodeBuilder.AddSettingValue(wrappedMemberStr);
                    }
                }

                roslynCodeBuilder.Pop();
            }

            roslynCodeBuilder.Pop();
        }
コード例 #29
0
ファイル: Program.cs プロジェクト: sachabarber/NP.Roxy
        static void Main(string[] args)
        {
            MSBuildWorkspace workspace = MSBuildWorkspace.Create();

            Project proj = workspace.OpenProjectAsync("../../InterfaceImplTest.csproj").Result;
            //Project proj = workspace.OpenProjectAsync("../../../TestProj/TestProj.csproj").Result;

            //Assembly testProjAssembly = Assembly.ReflectionOnlyLoadFrom("TestProj.dll");

            //AssemblyMetadata assemblyMetadata =
            //    Microsoft.CodeAnalysis.AssemblyMetadata.CreateFromFile("TestProj.dll");

            //AssemblyIdentity assemblyIdentity = AssemblyIdentity.FromAssemblyDefinition(testProjAssembly);

            Compilation compilation = proj.GetCompilationAsync().Result;

            INamedTypeSymbol myInterface =
                compilation.GetTypeByMetadataName($"InterfaceImplTest.{nameof(MyInterfaceToTestCircularReference)}");
            //INamedTypeSymbol myInterface =
            //    compilation.GetTypeByMetadataName($"TestProj.{nameof(IMyInterface)}");

            IAssemblySymbol assembly = myInterface.ContainingAssembly;

            ISourceAssemblySymbol sourceAssemblySymbol = assembly as ISourceAssemblySymbol;

            IAssemblySymbol assemblySymbol = assembly as IAssemblySymbol;

            IEnumerable <MetadataReference> references =
                sourceAssemblySymbol
                .Compilation
                .References
                .Concat
                (
                    new[]
            {
                sourceAssemblySymbol
                .Compilation
                .ToMetadataReference()
            }).ToArray();

            IPropertySymbol intProp =
                myInterface
                .GetMemberByName <IPropertySymbol>(nameof(IMyInterface.TheInt));
            IPropertySymbol strProp =
                myInterface
                .GetMemberByName <IPropertySymbol>(nameof(IMyInterface.TheStr));

            RoslynCodeBuilder roslynCodeBuilder = new RoslynCodeBuilder();

            RoslynAnalysisAndGenerationUtils.TheNamespaces = roslynCodeBuilder.AllNamespaces;
            RoslynAnalysisAndGenerationUtils.TheAssemblies = roslynCodeBuilder.AllAssemblies;

            roslynCodeBuilder.AddNamespace("NP.Generated");
            roslynCodeBuilder.AddClass("MyClass1", null, null, myInterface);

            roslynCodeBuilder.AddAutoProp(intProp.Name, intProp.Type as INamedTypeSymbol);
            roslynCodeBuilder.AddAutoProp(strProp.Name, strProp.Type as INamedTypeSymbol);

            roslynCodeBuilder.PopAll();

            string classStr = roslynCodeBuilder.ToString();
        }
コード例 #30
0
 protected void AddStaticCoreReference(RoslynCodeBuilder roslynCodeBuilder)
 {
     roslynCodeBuilder.AddLine($"public static Core {STATIC_CORE_MEMBER_NAME} {{ get; set; }}");
 }