Exemplo n.º 1
0
        private void GenerateSetPropertyMethod(CodeTypeDeclaration file, EAPClass classPom)
        {
            CodeMemberMethod method = new CodeMemberMethod();

            method.Attributes = MemberAttributes.Public | MemberAttributes.Override;
            method.Name       = "SetProperty";
            method.ReturnType = new CodeTypeReference(typeof(void));
            method.Parameters.Add(new CodeParameterDeclarationExpression("Property", "property"));

            List <CodeSnippetStatement> snipets = new List <CodeSnippetStatement>()
            {
                new CodeSnippetStatement("\t\t\t\tswitch(property.Id)"), new CodeSnippetStatement("\t\t\t\t{")
            };

            foreach (EAPAttribute att in classPom.Attributes)
            {
                if (att.IsListOfReferences == true)
                {
                    continue;
                }
                CodeSnippetStatement css     = new CodeSnippetStatement("\t\t\t\t\tcase ModelCode." + att.Code + ":");
                CodeSnippetStatement cssProp = new CodeSnippetStatement();
                if (att.TypeCode != "" && att.TypeCode.Equals("Enum"))
                {
                    cssProp = new CodeSnippetStatement("\t\t\t\t\t\t" + att.Name + " = (" + att.MeasurementType + ") property.AsEnum();");
                }
                else if (att.IsReference == true || att.TypeCode.Equals("Class"))
                {
                    cssProp = new CodeSnippetStatement("\t\t\t\t\t\t" + att.Name + " = property.AsReference();");
                }
                else
                {
                    cssProp = new CodeSnippetStatement("\t\t\t\t\t\t" + att.Name + " = property." + StringManipulationManager.GetAsMethod(att.MeasurementType));
                }
                CodeSnippetStatement cssBreak = new CodeSnippetStatement("\t\t\t\t\t\tbreak;");
                snipets.Add(css); snipets.Add(cssProp); snipets.Add(cssBreak);
            }
            CodeSnippetStatement cssDefault      = new CodeSnippetStatement("\t\t\t\t\tdefault:");
            CodeSnippetStatement cssBase         = new CodeSnippetStatement("\t\t\t\t\t\tbase.SetProperty(property);");
            CodeSnippetStatement cssBreakDefault = new CodeSnippetStatement("\t\t\t\t\t\tbreak;");
            CodeSnippetStatement ccss            = new CodeSnippetStatement("\t\t\t\t}");

            snipets.Add(cssDefault); snipets.Add(cssBase); snipets.Add(cssBreakDefault); snipets.Add(ccss);
            foreach (var item in snipets)
            {
                method.Statements.Add(item);
            }

            file.Members.Add(method);
        }