// ────────────────────────────── public void Perform( ref Builder_TexttemplateP1pImpl ref_FormatString, DataRowView dataRowView, Table_Humaninput xenonTable, Log_Reports log_Reports ) { Log_Method log_Method = new Log_MethodImpl(0); log_Method.BeginMethod(Info_Table.Name_Library, this, "Perform", log_Reports); // TODO IDは「前ゼロ付き文字列」または「int型」なので、念のため一度文字列に変換。 int nP1pNumber = 1; foreach (Fieldkey fieldKey in list_FieldKeies) { //"[" + oTable.Name + "]テーブルの或る行の[" + fieldKey.Name + "]フィールド値。"//valueOTable.SourceFilePath.HumanInputText Value_Humaninput valueH = Utility_Row.GetFieldvalue( fieldKey.Name, dataRowView.Row, true, log_Reports, fieldKey.Description ); if (!log_Reports.Successful) { // 既エラー。 goto gt_EndMethod; } // 正常時 EnumTypeFielddefinition typeFd = FielddefinitionImpl.TypefieldFromString(fieldKey.Name_Type, true, log_Reports); switch (typeFd) { case EnumTypeFielddefinition.String: { ref_FormatString.Dictionary_NumberAndValue_Parameter.Add( nP1pNumber, valueH.Text // String_HumaninputImpl.ParseString(valueH) ); } break; case EnumTypeFielddefinition.Int: { ref_FormatString.Dictionary_NumberAndValue_Parameter.Add( nP1pNumber, valueH.Text // Int_HumaninputImpl.ParseString(valueH) ); } break; case EnumTypeFielddefinition.Bool: { ref_FormatString.Dictionary_NumberAndValue_Parameter.Add( nP1pNumber, valueH.Text // Bool_HumaninputImpl.ParseString(valueH) ); } break; default: { // 未定義の型は、string扱い。 ref_FormatString.Dictionary_NumberAndValue_Parameter.Add( nP1pNumber, valueH.Text // String_HumaninputImpl.ParseString(valueH) ); } break; } nP1pNumber++; }//foreach // 正常 goto gt_EndMethod; // gt_EndMethod: log_Method.EndMethod(log_Reports); return; }
//──────────────────────────────────────── #endregion #region 生成と破棄 //──────────────────────────────────────── /// <summary> /// コンストラクター。 /// </summary> /// <param name="name_humanInput"></param> /// <param name="typeField">string,int,boolに対応。</param> public FielddefinitionImpl(string name_Humaninput, EnumTypeFielddefinition typeField) { this.Name_Humaninput = name_Humaninput; this.Type_Field = typeField; this.comment = ""; }
//──────────────────────────────────────── #endregion #region アクション //──────────────────────────────────────── /// <summary> /// DataRow → Dictionary /// </summary> /// <param name="row"></param> /// <param name="log_Reports"></param> public void Add(DataRow row, Log_Reports log_Reports) { Log_Method log_Method = new Log_MethodImpl(0); log_Method.BeginMethod(Info_Table.Name_Library, this, "Add", log_Reports); Dictionary <string, Value_Humaninput> record = new Dictionary <string, Value_Humaninput>(); int nFieldCount = row.ItemArray.Length; for (int nFieldIndex = 0; nFieldIndex < nFieldCount; nFieldIndex++) { // フィールド名 string sFieldName = xenonTable.RecordFielddefinition.ValueAt(nFieldIndex).Name_Trimupper; // 値 Value_Humaninput oValue; if (row[nFieldIndex] is DBNull) { //// デバッグ //if (true) //{ //Log_TextIndented txt = new Log_TextIndentedImpl(); // txt.Append(InfxenonTable.LibraryName + ":" + this.GetType().Name + "#Add:【ヌル】"); // txt.Append(" field=[" + sFieldName + "]"); // ystem.Console.WriteLine(txt.ToString()); //} String sConfigStack = xenonTable.Expression_Filepath_ConfigStack.Execute4_OnExpressionString( EnumHitcount.Unconstraint, log_Reports); if (!log_Reports.Successful) { // 既エラー。 goto gt_EndMethod; } EnumTypeFielddefinition typeField = xenonTable.RecordFielddefinition.ValueAt(nFieldIndex).Type_Field; switch (typeField) { case EnumTypeFielddefinition.String: oValue = new String_HumaninputImpl(sConfigStack); break; case EnumTypeFielddefinition.Int: oValue = new Int_HumaninputImpl(sConfigStack); break; case EnumTypeFielddefinition.Bool: oValue = new Bool_HumaninputImpl(sConfigStack); break; default: // エラー。 goto gt_Error_UndefinedType; } } else { oValue = (Value_Humaninput)row[nFieldIndex]; //// デバッグ //if (true) //{ //Log_TextIndented txt = new Log_TextIndentedImpl(); // txt.Append(InfxenonTable.LibraryName + ":" + this.GetType().Name + "#Add:【○】"); // txt.Append(" 値=[" + oValue.HumanInputString + "]"); // ystem.Console.WriteLine(txt.ToString()); //} } record.Add(sFieldName, oValue); } this.List_Field.Add(record); // 正常 goto gt_EndMethod; // // #region 異常系 //──────────────────────────────────────── gt_Error_UndefinedType: if (log_Reports.CanCreateReport) { Log_RecordReports r = log_Reports.BeginCreateReport(EnumReport.Error); r.SetTitle("▲エラー293!", log_Method); Log_TextIndented s = new Log_TextIndentedImpl(); s.Append(" 未定義の型です。プログラムのミスの可能性があります。"); s.Append(Environment.NewLine); s.Append(Environment.NewLine); r.Message = s.ToString(); log_Reports.EndCreateReport(); } goto gt_EndMethod; //──────────────────────────────────────── #endregion // // gt_EndMethod: log_Method.EndMethod(log_Reports); return; }
//──────────────────────────────────────── /// <summary> /// コンストラクター。 /// </summary> /// <param name="name_humanInput"></param> /// <param name="typeField">string,int,boolに対応。</param> public FielddefinitionImpl(string name_Humaninput, EnumTypeFielddefinition typeField) { this.Name_Humaninput = name_Humaninput; this.Type_Field = typeField; this.comment = ""; }