(.NET)DebuggerDisplayの件
サンプル
[DebuggerDisplay("Id={ID}, Name={Name,nq}")] public sealed class MyClass { public int ID{ get; set; } public string Name { get; set; } #if DEBUG public override string ToString() { return "ID=" + ID.ToString() + ", Nm=" + Name; } #endif }
Debugする分には優秀だが、
(スレッド同期などの関係でストップせずに一連で)ログに出したい際などは
ログに出てくれないので、
結局は ToString() をoverrideし、 #if DEBUG で囲むのが総合的に最適と思われる。
メソッド名/プロパティ名とか変わる際に(文字列定義なので)自動変更の対象外になっちゃうので。
ただし意図的に ToString() の実装が必要な場合は仕方がないのかなと。
その場合は ToString2() を #if DEBUG で囲んで実装すればいいや。DEBUGだし、いいや。
DataSourceにDataTableやらセットしてFilterかけたい時のアレ
作りに当たって色々注意があった。
が、開発環境がないのでメモだけ。
■やりたいこと
・Windowsフォームの
・DataGridViewで
・簡単に(DataViewなどの)Filter機能を使いたかった
・できれば内部定義のクラスがデータ1件
■注意点
・DataSourceにList型入れても無駄
・Listにstring配列入れても無駄
・DataSourceに内部のクラス型を入れてもバインドしても無駄
・DataSourceにstring配列入れても無駄?
・BindingSourceとかにListやら入れても無駄
・DataTableからのものであることが必要だった気がする
■やったこと
確か
・DataTable.Rows.Add(string[])で1行データ追加
・列情報は先にフォームから追加
・DataTableの中身は初期時にテーブル列情報からコピー
・なんかバインド
・DataTable.DefaultView?. みたいなとこでフィルタ設定
こんな感じだったかも。
余裕あったらまた色々と調べなおします…