コード例 #1
0
        private bool WriteSingleEnumItem(
            JavascriptConversionContext context,
            JavascriptWriter writer,
            long numValue,
            object enumValue,
            bool inStringAlready)
        {
            if ((this.opts & EnumOptions.UseStrings) != 0)
            {
                if (inStringAlready)
                {
                    if ((this.opts & EnumOptions.UseNumbers) != 0)
                    {
                        writer.WriteLiteralStringContent(numValue.ToString());
                    }
                    else
                    {
                        var str = enumValue.ToString();
                        if (numValue == 0 && str == "0")
                        {
                            writer.WriteLiteralStringContent("");
                        }
                        else
                        {
                            writer.WriteLiteralStringContent(str);
                        }
                    }
                    return(true);
                }

                using (writer.Operation(JavascriptOperationTypes.Literal))
                {
                    if ((this.opts & EnumOptions.UseNumbers) != 0)
                    {
                        writer.WriteLiteral(numValue.ToString());
                    }
                    else
                    {
                        var str = enumValue.ToString();
                        if (numValue == 0 && str == "0")
                        {
                            writer.WriteLiteral("");
                        }
                        else
                        {
                            writer.WriteLiteral(str);
                        }
                    }
                    return(true);
                }
            }

            if ((this.opts & EnumOptions.UseNumbers) != 0)
            {
                using (writer.Operation(JavascriptOperationTypes.Literal))
                    writer.WriteLiteral(numValue);
                return(true);
            }

            if ((this.opts & EnumOptions.UseStaticFields) != 0)
            {
                using (writer.Operation(JavascriptOperationTypes.IndexerProperty))
                    context.Write(enumValue.GetType().Name).WriteAccessor(enumValue.ToString());
                return(true);
            }

            return(false);
        }