チェンジセット 1630 (default)


以下の違いを無視:
日時:
2024/01/29 12:37:55 (8ヵ月前)
更新者:
hizuya@…
ログメッセージ:
  • SQL テンプレートの定数として Enum を使用出来るように機能を追加。
場所:
framework/trunk
ファイル:
1個の追加
3個の更新

凡例:

未変更
追加
削除
  • framework/trunk/CoreLibrary/Sources/Data/SqlTemplateConstants.cs

    r1629 r1630  
    397397            } 
    398398 
     399            if (!typeInfo.IsPublic) 
     400            { 
     401                return; 
     402            } 
     403 
    399404            // C# の static class の場合、IsAbstract == true && IsSealed == true になっている 
    400             if (!typeInfo.IsPublic 
    401                 || !typeInfo.IsClass 
    402                 || !typeInfo.IsAbstract 
    403                 || !typeInfo.IsSealed) 
    404             { 
    405                 return; 
    406             } 
    407  
    408             foreach (FieldInfo fieldInfo in typeInfo.DeclaredFields) 
    409             { 
    410                 BuildTemplateContents(builder, fieldInfo); 
     405            if (typeInfo.IsClass 
     406                && typeInfo.IsAbstract 
     407                && typeInfo.IsSealed) 
     408            { 
     409                foreach (FieldInfo fieldInfo in typeInfo.DeclaredFields) 
     410                { 
     411                    BuildTemplateContents(builder, fieldInfo); 
     412                } 
     413            } 
     414 
     415            // 列挙体 
     416            if (typeInfo.IsEnum) 
     417            { 
     418                foreach (Enum enumValue in Enum.GetValues(typeInfo)) 
     419                { 
     420                    BuildTemplateContents(builder, typeInfo, enumValue); 
     421                } 
    411422            } 
    412423        } 
     
    457468            builder.AppendLine(); 
    458469        } 
     470 
     471        /// <summary> 
     472        /// テンプレートの内容を生成します。 
     473        /// </summary> 
     474        /// <param name="builder">文字列ビルダー。</param> 
     475        /// <param name="typeInfo">型情報。</param> 
     476        /// <param name="enumValue">列挙型の値。</param> 
     477        private void BuildTemplateContents(StringBuilder builder, TypeInfo typeInfo, Enum enumValue) 
     478        { 
     479            string enumName = enumValue.ToString("G"); 
     480 
     481            // 文字列表現 
     482            if (prefix != null) 
     483            { 
     484                builder.Append(prefix); 
     485            } 
     486 
     487            builder.Append(typeInfo.Name); 
     488            builder.Append('.'); 
     489            builder.Append(enumName); 
     490            builder.Append("='"); 
     491            builder.Append(enumName.Replace("'", "''")); 
     492            builder.Append('\''); 
     493            builder.AppendLine(); 
     494 
     495            // 数値表現 
     496            if (prefix != null) 
     497            { 
     498                builder.Append(prefix); 
     499            } 
     500 
     501            builder.Append(typeInfo.Name); 
     502            builder.Append('.'); 
     503            builder.Append(enumName); 
     504            builder.Append(";D="); 
     505            builder.AppendLine(enumValue.ToString("D")); 
     506        } 
    459507    } 
    460508} 
  • framework/trunk/CoreTest/CoreTest.csproj

    r1628 r1630  
    6363    <Compile Include="Sources\Csv\CsvRawValueBean.cs" /> 
    6464    <Compile Include="Sources\Data\DataConstants.cs" /> 
     65    <Compile Include="Sources\Data\DataEnum.cs" /> 
    6566    <Compile Include="Sources\Data\DbDataOperatorResourceTest.cs" /> 
    6667    <Compile Include="Sources\Data\DbDataOperatorSequenceTest.cs" /> 
  • framework/trunk/CoreTest/Sources/Data/SqlTemplateConstantsTest.cs

    r1628 r1630  
    7070                Verify(template, "DataConstants.StringConstantField3", "'" + DataConstants.StringConstantField3 + "'"); 
    7171 
     72                Verify(template, "DataEnum.Default", "'" + DataEnum.Default.ToString("G") + "'"); 
     73                Verify(template, "DataEnum.Default;D", DataEnum.Default.ToString("D")); 
     74                Verify(template, "DataEnum.Enabled", "'" + DataEnum.Enabled.ToString("G") + "'"); 
     75                Verify(template, "DataEnum.Enabled;D", DataEnum.Enabled.ToString("D")); 
     76                Verify(template, "DataEnum.Disabled", "'" + DataEnum.Disabled.ToString("G") + "'"); 
     77                Verify(template, "DataEnum.Disabled;D", DataEnum.Disabled.ToString("D")); 
     78 
    7279                // static フィールドは対象外 
    7380                Assert.That( 
詳しい使い方は TracChangeset を参照してください。