public override string Generate(int indent)
        {
            if (useAssemblyQualifiedReturnType)
            {
                var _attributes = string.Empty;

                foreach (AttributeGenerator attr in attributes)
                {
                    _attributes += attr.Generate(indent) + "\n";
                }

                var modSpace   = (modifier == PropertyModifier.None) ? string.Empty : " ";
                var definition = CodeBuilder.Indent(indent) + scope.AsString().ConstructHighlight() + " " + modifier.AsString().ConstructHighlight() + modSpace + assemblyQualifiedReturnType + (hasIndexer ? $"[{indexerBody}]" : string.Empty) + " " + name.LegalMemberName() + " " + GetterSetter();
                var output     = defaultValue == null && returnType.IsValueType && returnType.IsPrimitive ? (hasGetter || hasSetter ? string.Empty : (!hasDefault ? ";" : string.Empty)) : hasDefault ? " = " + defaultValue.As().Code(true) + ";" : string.Empty;
                return(_attributes + definition + output);
            }
            else
            {
                var _attributes = string.Empty;

                foreach (AttributeGenerator attr in attributes)
                {
                    _attributes += attr.Generate(indent) + "\n";
                }

                var modSpace   = (modifier == PropertyModifier.None) ? string.Empty : " ";
                var definition = CodeBuilder.Indent(indent) + scope.AsString().ConstructHighlight() + " " + modifier.AsString().ConstructHighlight() + modSpace + returnType.As().CSharpName().TypeHighlight() + (hasIndexer ? $"[{indexerBody}]" : string.Empty) + " " + name + " " + GetterSetter();
                var output     = defaultValue == null && assemblyQualifiedIsValueType && assemblyQualifiedIsPrimitive ? (hasGetter || hasSetter ? string.Empty : (!hasDefault ? ";" : string.Empty)) : hasDefault ? " = " + defaultValue.As().Code(true) + ";" : string.Empty;
                return(_attributes + definition + output);
            }

            string GetterSetter()
            {
                var result = string.Empty;

                if (multiStatementGetter || multiStatementSetter)
                {
                    return((string.IsNullOrEmpty(getterBody) ? "\n" + CodeBuilder.Indent(indent) + "{" : "\n" + CodeBuilder.Indent(indent) + "{\n" + Getter()) + (string.IsNullOrEmpty(setterBody) ? "\n" : (multiStatementGetter ? "\n" : string.Empty) + "\n" + Setter() + "\n") + CodeBuilder.Indent(indent) + "}");
                }
                else
                {
                    return(CodeBuilder.Indent(indent) + "{ " + (string.IsNullOrEmpty(getterBody) ? string.Empty : Getter() + " ") + (string.IsNullOrEmpty(setterBody) ? string.Empty : (string.IsNullOrEmpty(getterBody) ? " " : string.Empty) + Setter() + " ") + "}");
                }
            }

            string Getter()
            {
                if (multiStatementGetter)
                {
                    return(CodeBuilder.Indent(indent) + CodeBuilder.Indent(indent) + "get \n".ConstructHighlight() + CodeBuilder.Indent(indent + 1) + "{\n" + CodeBuilder.Indent(indent + 2) + getterBody.Replace("\n", "\n" + CodeBuilder.Indent(indent + 2)) + "\n" + CodeBuilder.Indent(indent + 1) + "}");
                }
                else
                {
                    return("get".ConstructHighlight() + " => " + getterBody.Replace("\n", "\n" + CodeBuilder.Indent(indent + 1)) + ";");
                }
            }

            string Setter()
            {
                if (multiStatementSetter)
                {
                    return(CodeBuilder.Indent(indent) + CodeBuilder.Indent(indent) + "set \n".ConstructHighlight() + CodeBuilder.Indent(indent + 1) + "{\n" + CodeBuilder.Indent(indent + 2) + setterBody.Replace("\n", "\n" + CodeBuilder.Indent(indent + 2)) + "\n" + CodeBuilder.Indent(indent + 1) + "}");
                }
                else
                {
                    return("set".ConstructHighlight() + " => " + setterBody.Replace("\n", "\n" + CodeBuilder.Indent(indent + 1)) + ";");
                }
            }
        }
Пример #2
0
        public override string Generate(int indent)
        {
            if (returnTypeIsString)
            {
                var _attributes = string.Empty;

                foreach (AttributeGenerator attr in attributes)
                {
                    _attributes += attr.Generate(indent) + "\n";
                }

                var modSpace   = (modifier == PropertyModifier.None) ? string.Empty : " ";
                var definition = CodeBuilder.Indent(indent) + scope.AsString() + " " + modifier.AsString() + modSpace + returnTypeString + " " + name + " " + GetterSetter();
                var output     = defaultValue == null && returnType.IsValueType && returnType.IsPrimitive ? (hasGetter || hasSetter ? string.Empty : ";") : hasDefault ? " = " + defaultValue.As().Code(true) + ";" : string.Empty;
                return(_attributes + definition + output);
            }
            else
            {
                var _attributes = string.Empty;

                foreach (AttributeGenerator attr in attributes)
                {
                    _attributes += attr.Generate(indent) + "\n";
                }

                var modSpace   = (modifier == PropertyModifier.None) ? string.Empty : " ";
                var definition = CodeBuilder.Indent(indent) + scope.AsString() + " " + modifier.AsString() + modSpace + returnType.As().CSharpName() + " " + name + " " + GetterSetter();
                var output     = defaultValue == null && stringIsValueType && stringIsPrimitive ? (hasGetter || hasSetter ? string.Empty : ";") : hasDefault ? " = " + defaultValue.As().Code(true) + ";" : string.Empty;
                return(_attributes + definition + output);
            }

            string GetterSetter()
            {
                var result = string.Empty;

                if (multiStatementGetter || multiStatementSetter)
                {
                    return((getterBody == null ? string.Empty : "\n" + CodeBuilder.Indent(indent) + "{\n" + Getter()) + (setterBody == null ? string.Empty : "\n" + Setter() + "\n") + "\n" + CodeBuilder.Indent(indent) + "}");
                }
                else
                {
                    return("{ " + (getterBody == null ? string.Empty : Getter() + " ") + (setterBody == null ? string.Empty : (getterBody == null ? " " : string.Empty) + Setter() + " ") + "}");
                }
            }

            string Getter()
            {
                if (multiStatementGetter)
                {
                    return(CodeBuilder.Indent(indent + 1) + "get\n" + CodeBuilder.Indent(indent + 1) + "{\n" + CodeBuilder.Indent(indent + 2) + getterBody.Replace("\n", "\n" + CodeBuilder.Indent(indent + 2)) + "\n" + CodeBuilder.Indent(indent + 1) + "}");
                }
                else
                {
                    return("get => " + getterBody.Replace("\n", "\n" + CodeBuilder.Indent(indent + 1)) + ";");
                }
            }

            string Setter()
            {
                if (multiStatementSetter)
                {
                    return(CodeBuilder.Indent(indent + 1) + "set \n" + "{\n" + setterBody.Replace("\n", "\n" + CodeBuilder.Indent(indent + 1)) + "\n}");
                }
                else
                {
                    return("set => " + setterBody.Replace("\n", "\n" + CodeBuilder.Indent(indent + 1)) + ";");
                }
            }
        }