Example #1
0
        private ProxyModel GetModel(ClassDeclarationSyntax classSyntax, Compilation compilation)
        {
            var root = classSyntax.GetCompilationUnit();
            var classSemanticModel = compilation.GetSemanticModel(classSyntax.SyntaxTree);
            var classSymbol        = classSemanticModel.GetDeclaredSymbol(classSyntax);

            var proxyModel = new ProxyModel
            {
                ClassBase = classSyntax.GetClassName(),

                ClassName = $"{classSyntax.GetClassName()}{ProxyAttribute.Name}",

                ClassModifier = classSyntax.GetClassModifier(),

                Usings = root.GetUsings(),

                Namespace = root.GetNamespace(),

                Commands = GetMethodWithParameter(classSyntax, classSemanticModel, nameof(Command)),

                Queries = GetMethodWithParameter(classSyntax, classSemanticModel, nameof(Query)),

                Events = GetMethodWithParameter(classSyntax, classSemanticModel, nameof(Event)),

                ConstructorParameters = GetConstructor(classSymbol),

                InjectedProperties = GetInjectedProperties(classSymbol),

                Subscriptions = GetSubscriptions(classSyntax, classSemanticModel)
            };

            return(proxyModel);
        }