一人情シスのつぶやき

名古屋の中小企業で一人情シスをしている作者が、日々の業務で思うことをつぶやきます。

C#

MSTest の実行順番

要約 MSTestは、複数クラスのメソッドを交互に実行しうる。これが困る場合は1つのクラスにまとめるべきかもしれない 内容 テストクラスAで更新系のテストをまとめてクラス初期化時にデータ整備を行い、テストクラスBで参照系のテストをまとめてテスト実行時…

DataGridViewの列の並び順

C#

Windows FormのDataGridView .Net Framework 4.7.2 にて DataGridViewでDataSourceにDataTableを代入して利用する。 dataGridView1.DataSource = dt1; 1回目に列名2020/1,2020/2,2020/3,2020/4 の4つの列名を含むDataTableを設定。その後2019/10,2019/11,201…

LINQの遅延評価がマイナスに働くケース

C#

LINQに限らず遅延評価はパフォーマンスに対してプラスに働く、という説明が多いように思うが、劇的にマイナスに働くケースがあった。 商品の名前の先頭に応じてグループ分けし、残ったデータに対して同様にグループ分けする以下のようなコード IEnumerable<T> l</t>…

DataRow.Field<int> とConvert.ToInt32 の違い

C#

DataRow.Field とConvert.ToInt32 の違いについて、 int がstringになった場合でも同様。 DataRowの値がDBNullかどうかで分ける場合に var val = (dr["name"] == DBNull.Value) ? "" : Convert.ToString(dr["name"]) とやっていたのだが、 var val = dr.Field<int?></int?>…

NuGetライブラリ整理直後に謎のエラー

NuGetで使用するライブラリをVisualStuidoの管理画面より変更(削除->追加)し、合わせて削除したライブラリに依存するライブラリを削除したところ、dllが存在しない旨を表すエラーが発生。 そのdllを見ると、削除したはずのdll。 App.configを見ると、その削…

MySqlBulkLoaderでの取込結果が合わない

C#でMariaDBに接続する際にMySqlConnectorを利用している。 大量のデータを取り込む必要があったため、MySqlBulkLoaderで取り込んだところ、なんかゴミデータみたいのが入るうえに数字も合わない。 よくよく調べたところ、前段のCSV出力個所と、取込時の設定…

IEnumerableで受けてIReadOnlyListで返すなら

C#

tack41tu.hatenablog.com で記載した方針を受けて、最近はCollectionに関してはIEnumerableで受けて、IReadOnlyListで返す基本方針としている。 一方で、プロパティの変更による予期せぬ誤動作を防ぐために、POCOについてはコンストラクタで初期とを設定し、…

ClosedXMLにて印刷範囲が設定され、「(」を含むシート名を保存するとファイルが壊れる

ClosedXML 0.93.1, 0.94.2で確認。 印刷範囲を設定したファイルを開いて、「(」を含むシートを作成して保存すると、ファイルが壊れてしまいExcelでは開けなくなる。 workbook.xmlを見る限り、シート名をシングルクォーテーションでエスケープできていないの…

Form Load時にRadioButtonのCheckedChangedイベント発生

C#

C# WinFormにてForm Load時にRadioButtonのCheckedChangedイベントが発生する事態に遭遇。 LoadイベントではCheckedをFalseにしているだけだし、他に怪しいイベントも見当たらない。 原因はTabStopが設定された、最小のTabIndexを持つフォームがRadioButton…

C#でのCollection系オブジェクトの受け渡し指針

C#

C#でCollection系オブジェクト(IEnumerable, ICollection, IList等)の受け渡しをどうすべきか悩んでいた。 ListよりIList, EnumerableよりIEnumerableといった実装を含まないInterfaceが好ましいのは当然として、 あらゆるオブジェクトを想定してより抽象的…

MS Unit TestにおけるDeploymentItem

MS Unit Testにてテストファイルを配布してテストに利用する方法がようやくわかった。 ファイルをソリューションエクスプローラー上に登録して「出力ディレクトリにコピー」を「常にコピー」あたりにすればファイル名で参照できるのだが、ディレクトリは指定…

C#におけるIEnumerable,IEnumerator

C#

IEnumerable(IEnumerator)はIListに比べると制約が多く、同じことをやろうとしても面倒、その分汎用性が高い、くらいに思ってました。 実際には、IEnumerableには要素の編集が一切できないのが最も大きな違いだと思います。 stackoverflow.com System.Linqを…

ClosedXMLによるExcel編集がVirusBusterに強制終了させられる

ClosedXMLで、ファイルサーバの雛形ファイルをもとに編集して出力するということをよく行います。 この際、ClosedXMLの保存先がファイルサーバだと、当社のVirus Buster Business SecurityにUnauthorized Encryptionと言われて 強制終了させられることがあり…

ClosedXMLの画像追加におけるWorksheetの取り扱いについて

C#でClosedXMLを使用してExcelに画像を追加する処理をしていた際、なぜかWorkbookの保存時にObjectDisposedExceptionが発生するという事態になりました。 以下のようなコードです using (XLWorkbook wb = new XLWorkbook(filePath)) { IXLWorksheet ws_src =…