Esempio n. 1
0
        private static void parseUsingStatement(CsStatement pArg1, CodeBuilder pSb, FactoryExpressionCreator pCreator)
        {
            CsUsingStatement           statement   = (CsUsingStatement)pArg1;
            CsLocalVariableDeclaration declaration = statement.resource as CsLocalVariableDeclaration;

            string varname;

            if (declaration == null)
            {
                varname = "$$using$$";
                Expression e = pCreator.Parse(statement.resource);

                pSb.AppendFormat("var {0}:{1} = {2};",
                                 varname,
                                 As3Helpers.Convert(Helpers.GetType(e.Type)),
                                 e.Value
                                 );

                pSb.AppendLine();
            }
            else
            {
                CsLocalVariableDeclarator declarator = declaration.declarators.First.Value;
                StringBuilder             sb         = new StringBuilder();

                sb.AppendFormat("var {0}:{1}",
                                declarator.identifier.identifier,
                                As3Helpers.Convert(Helpers.GetType(declaration.type))
                                );

                varname = declarator.identifier.identifier;

                if (declarator.initializer == null)
                {
                    sb.Append(";");
                }
                else
                {
                    sb.AppendFormat(" = {0};", parseNode(declarator.initializer, pCreator));
                }

                pSb.Append(sb.ToString());
                pSb.AppendLine();
            }

            pSb.Append("try {");
            pSb.AppendLine();

            ParseNode(statement.statement, pSb, pCreator);

            pSb.Append("} finally {");
            pSb.AppendLine();
            pSb.AppendFormat("	if ({0} != null) {0}.Dispose();", varname);
            pSb.AppendLine();

            pSb.Append("}");
            pSb.AppendLine();
            pSb.AppendLine();
        }
Esempio n. 2
0
        /// <summary>
        /// Extension method that creates a fully formatted using statement.
        /// </summary>
        /// <example>
        /// Format with alias using [alias] = [namespace];
        /// Format without alias  using [namespace];
        /// </example>
        /// <param name="source">The source using statement to use.</param>
        /// <param name="includeAlias">Optional flag that determines if a alias is included to add it to the using statement definition.</param>
        /// <param name="alias">Optional flag that allows you to set a custom alias. If set this will always overrider the <see cref="includeAlias"/> flag and any internal alias assigned to the model.</param>
        /// <returns>Fully formatted using statement, or null if namespace data is missing from the model</returns>
        public static string CSharpFormatUsingStatement(this CsUsingStatement source, bool includeAlias = true, string alias = null)
        {
            var nameSpace = source.ReferenceNamespace;

            if (string.IsNullOrEmpty(nameSpace))
            {
                return(null);
            }

            var  formattedAlias = alias;
            bool useAlias       = !string.IsNullOrEmpty(formattedAlias);

            if (!useAlias)
            {
                if (includeAlias & source.HasAlias)
                {
                    formattedAlias = source.Alias;
                    useAlias       = true;
                }
            }

            return(!useAlias ? $"using {nameSpace};" : $"using {formattedAlias} = {nameSpace};");
        }