예제 #1
0
        public static void AddEnumField(this CodeTypeDeclaration pCodeType, EnumFieldData pFieldData)
        {
            if (string.IsNullOrEmpty(pFieldData.strValue.Trim()))
            {
                return;
            }

            foreach (CodeTypeMember pMember in pCodeType.Members)
            {
                if (pMember.Name == pFieldData.strValue)
                {
                    return;
                }
            }

            CodeMemberField pField = new CodeMemberField(pCodeType.Name, pFieldData.strValue);

            if (pFieldData.iNumber != int.MaxValue)
            {
                pField.InitExpression = new CodePrimitiveExpression(pFieldData.iNumber);
            }

            if (string.IsNullOrEmpty(pFieldData.strComment) == false)
            {
                pField.Comments.Add(new CodeCommentStatement("<summary>", true));
                pField.Comments.Add(new CodeCommentStatement(pFieldData.strComment, true));
                pField.Comments.Add(new CodeCommentStatement("</summary>", true));
            }

            pCodeType.Members.Add(pField);
        }
예제 #2
0
        private static Task Parsing_OnEnum(TypeData pSheetData, ISheetConnector pConnector, CodeFileBuilder pCodeFileBuilder)
        {
            Dictionary <int, EEnumHeaderType>        mapEnumType  = new Dictionary <int, EEnumHeaderType>();
            Dictionary <string, CodeTypeDeclaration> mapEnumValue = new Dictionary <string, CodeTypeDeclaration>();

            return(pSheetData.ParsingSheet_UseTask(pConnector,
                                                   (listRow, strText, iRow, iColumn) =>
            {
                EEnumHeaderType eType = EEnumHeaderType.EnumNone;
                if (Enum.TryParse(strText, out eType))
                {
                    if (eType == EEnumHeaderType.EnumType)
                    {
                        if (mapEnumType.ContainsKey(iColumn) == false)
                        {
                            mapEnumType.Add(iColumn, eType);
                        }

                        for (int i = iColumn; i < listRow.Count; i++)
                        {
                            string strTextOtherColumn = (string)listRow[i];
                            if (Enum.TryParse(strTextOtherColumn, out eType))
                            {
                                if (mapEnumType.ContainsKey(i) == false)
                                {
                                    mapEnumType.Add(i, eType);
                                }
                            }
                        }
                    }

                    return;
                }

                if (mapEnumType.TryGetValue(iColumn, out eType) == false)
                {
                    return;
                }

                if (eType != EEnumHeaderType.EnumType)
                {
                    return;
                }

                if (mapEnumValue.ContainsKey(strText) == false)
                {
                    mapEnumValue.Add(strText, pCodeFileBuilder.AddCodeType(strText, ESheetType.Enum));
                }

                EnumFieldData pFieldData = new EnumFieldData();
                for (int i = iColumn; i < listRow.Count; i++)
                {
                    if (mapEnumType.TryGetValue(i, out eType))
                    {
                        string strNextText = (string)listRow[i];
                        switch (eType)
                        {
                        case EEnumHeaderType.EnumValue:
                            pFieldData.strValue = strNextText;
                            break;

                        case EEnumHeaderType.NumberValue: pFieldData.iNumber = int.Parse(strNextText); break;

                        case EEnumHeaderType.Comment: pFieldData.strComment = strNextText; break;
                        }
                    }
                }

                if (string.IsNullOrEmpty(pFieldData.strValue))
                {
                    throw new Exception($"이넘인데 값이 없습니다 - 타입 : {mapEnumValue[strText].Name}");
                }

                mapEnumValue[strText].AddEnumField(pFieldData);
            }));
        }