C#

この未熟者(可変個引数って便利?)

こんなカスタム属性クラスがあって public FooAttribute : Attribute { string arrayParams; public FooAttribute(string arrayParam) { this.arrayParams = arrayParams; } } 配列のパラメタをフィールドに渡さなくてはならないので、今までは以下のように…

XML Documentation Comments Guide

XML Documentation Comments Guide - Dynicity, LLC Dynicityが公開している、NDocやSoundCastleに準拠したXMLコメントの記述を集約したガイド。素晴らしい。 感謝しつつ参考にさせて頂こう。

SetProcessWorkingSetSizeとWindowsForms

NyaRuRuさんも自身の日記で何度か採り上げていたSetProcessWorkingSetSize(hProcess, -1, -1)によるワーキングセットの縮小指示だが、WindowsFormsアプリケーションにてこのAPIを呼ぶにはどのタイミングで呼ぶのが効果的なのだろう。(ベストの性能を期待する…

配列とIEnumerable

ReSharperに指摘されて気づいたのだが.NET2.0以降における配列T[]はIEnumerableで置き換えることが出来るんだった。 object array = new object{"foo", "bar", "baz"}; IEnumerable enumerable = array; 代入互換性があるとは知っていても意識して使うことは…

BindingSource内部リストの型

DataSourceプロパティに前もってオブジェクトかその型を与えることで、その後Addメソッドを呼ぶ際には内部にBindingListが生成されるのは既知だが、BindingList以外のIBindingList実装を使いたい場合はどうすればよいのだろう。内部リストを付け替えるプロパ…

重いRealProxy#Invokeを他の良い方法で置き換える

先日のエントリの代替案(というかこちらの方がより良い)について、NyaRuRuさんに非常に詳しく解説頂いた。パフォーマンスのための Delegate, LCG, LINQ, DLR (を後で書く) - NyaRuRuの日記すぐにでも試したくてうずうずしているのだが今日は時間が無い。取り…

INotifyPropertyChangedと大量データの転記

以前に何度か紹介したが、拙作のフレームワークではS2Container.NETと同様のRealProxyを用いたAOP機能により、DTOのプロパティ変更通知を自動化している。カスタム属性を用いたデータバインディングの省力化(INotifyPropertyChanged実装編)この機能のおかげ…

S2Dxo.NET

拙作のDxO. for NETの一部が、S2Dxo.NETのベースとして使われていることをコメントで報告頂いた。大変光栄で嬉しく思う。DxO. for NETは自分の仕事でも使っているが、DTOと組み合わせることでGUIとデータ、ビジネスロジックの分離とコーディングの省力化に絶…

SendKeys.Sendと入力コントロール

このように最小限のメニュー項目とテキストボックスコントロールを載せたフォームを作り、メニュー項目が選択された場合のコードを以下のように書いたとしよう。(面倒ならDoubleClickイベントを使っても良い) private void ToolStripMenuItem_Click(object s…

明日は我が身(ClickOnceとProxyServer)

以前のエントリでプロキシサーバの設定を行った状態でClickOnceの配布に失敗する件に関して言及した。プロキシサーバの認証が必要な環境でClickOnceでの配布が失敗するこの問題だが、先日ついに自分が担当している顧客での環境でも発生した。調べてみるとaki…

System.Windows.Forms.Loadイベントは一度だけとは限らない

自分の経験とドキュメントを読んだ感覚で判断したことが実は単なる思い込みだったことはままあるが、今回もそんな一件。WindowsFormにおいて、FormのLoadイベントの解説は日本語ドキュメントでは以下のように明記されている。 Form.Load イベント フォームが…

Attribute.IsDefined()

カスタム属性が定義されているかを検査するメソッド。Attribute.GetCustomAttribute又はAttribute.GetCustomAttributesメソッドでも検査はできるが、属性の実体化が伴わないのは標題のメソッドだけということだ。

マーカアノテーション

とはデータを持たない、標識としてのアノテーション。結構使う機会が多い。 例えば、GUIではなくGUIとデータバインドしているDTOの変更管理をしたい場合。通常は全てのプロパティの変更をチェックしてダーティ(変更が発生したか)を検査するのだが、検査の対…

UTF8でXMLを出力する際に必ずBOM無しにする

.NETクライアントからXMLをサーバ上のTomcatに送信するためには、Javaと互換性を保つためUTF8で出力する場合はいつもBOM無しにしなくちゃならない。例えば、引数にストリームと対象のエンコーディングを指定することでXMLをストリームに書き出すメソッドがあ…

スレッド生成時にカレントスレッドのカルチャは引き継がれない

以下のコードを実行する。(Windowsから得られたカルチャは"ja-JP"とする) CultureInfo cInfo = CultureInfo.CreateSpecificCulture("en-US"); Thread.CurrentThread.CurrentCulture = cInfo; Thread.CurrentThread.CurrentUICulture = cInfo; Thread newThre…

アプリケーションの初期化とカルチャ

.NETはカルチャを取得、設定することでアプリケーションの国際化、地域化を簡単に実装できる。 O/Sのカルチャをそのまま使うのであればコードを書く必要は無い。例えば、WindowsFormやWebFormでは、Localizableプロパティをtrueにしておく等、適切にプロパテ…

C#2.0->3.0 (HashSet)

同名のタイトルでは、今までC#2.0で書いてきた拙作のフレームワークをC#3.0(.NET Framework 3.5)でビルド又は実行した際の、主に互換性に関する話題を書き溜めて行こうと思う。(思いの外少なくて頓挫するかもしれないがやむなし)No.1はHashSet。Javaでは同名…

]Pocket PC 2003 デバイスエミュレータに接続できない(解決)

先日のVisual Studio 2005のデバイスエミュレータに接続できない件だが、MSDN Forumで解決策を見つけることができた。Unable to deploy to emulator VS 2005 and Smart Device installation problem両方とも2005年とかなり古いポストだが、原因もそこにある…

Pocket PC 2003 デバイスエミュレータに接続できない

ちょっとした調べものがあったのでVisual Studio 2005のデバイスエミュレータマネジャを起動してPocket PC 2003 SEエミュレータを起動した所、以下のように接続できないとエラーが出る。 自宅のWindows VistaをインストールしたPCだと上手く行くんだがなぁ。…

ReSharper3とoptimize usings

ReSharper3にアップグレードしたのは良いのだが、お気に入りの機能のうちの一つであるOptimize using※が効いてないようで、マウスカーソルを解決できていないネームスペース上に置いてもusing句のガイダンスが出ない。と思ったら、単にCode Analysisのオプシ…

TortoiseSVN 1.4.4

Visual Studio 2005 C#のソリューションをチェックアウトするとO/Sごと砂時計でハングアップ。 今のところ原因全く判らず。追記:原因が判明以下のように頭一文字のキャメライズの有無だけが違う同一のディレクトリがリポジトリに存在しており、そこがチェッ…

ComponentResourceManager#ApplyResources

WindowsFormsアプリケーションのデザインでForm(Form1)を生成し、コントロールを配置した状態でFormのLocalizableプロパティをtrueに設定するとForm1.Designer.csの初期化コードは以下のように変化する。例) Labelコントロールが一つだけ配置されているForm1…

safeprojectname

Visual Studio 2005で使うプロジェクトテンプレート中のAssemblyInfo.cs中においても標題のパラメタによる置換は有効だ。 AssemblyInfo.csの例(冒頭) // プロジェクト作成時、プロジェクト名で同プロパティを置き換える [assembly: AssemblyTitle("$safeproj…

カスタムコントロールの必要性

コンポーネント作ろうよ - 菊池 Blogコンポーネントにしてツールボックスに乗せるか否かの議論は別にして、カスタムコントロールにすることが必要なケースが昔に比べて減っているのは確か。 過去の日記でも触れているが、WindowsFormsに限れば匿名デリゲート…

タスクバーのグルーピングとWindowsForm

WindowsXP以降、MicrosoftのO/Sにはタスクバー上のプログラムボタンをグループ化する機能がついている。例えば同じアプリケーションから起動されたウィンドウが一定数に達した場合、プログラム名が付いた1つのタスクバーボタンにまとめられる。そしてまとめ…

ReSharper 3.0.1

コーディングとテスト中はとてもお世話になっているのだし、今後も.NETの仕事は暫く続きそうなのでアップデートすることにした。私の場合、C# Editionで事足りるんで高々$149だし。おっと、インストール後はVisual Studio 2005の設定のリセットは忘れずに。 …

ReSharper 3.0

What's New in ReSharper 3.0XML及びXAMLサポートとOrcas対応が大きなトピックか。 あとはVB.NETとC#のバージョンを別々に使えるのはリソース節約の観点から有り難い。って、4月以前に2.xを購入したユーザは有償アップグレードなのか。

ADO.NET データプロバイダのインタフェースとクラス階層に八つ当たる

例えばADO.NETデータプロバイダ上で使える、oracleで使用するのと殆ど同じだが少しだけ違うカスタムなSQLパラメタとそのコレクションを用意したいと思う。使うインタフェースはVisual Studioのデザイナサポートを無視した単純なプロバイダの実装ならば Syste…

DataDirect Connect for ADO.NET

先日の日記ではADO.NETにおけるOracle用プロバイダの傾向について書いたが、これらは全てSQL*NET環境が前提で動作するプロバイダだった。 Javaのデータベース接続規格であるJDBCはそのドライバのタイプに"ネイティブ・プロトコル・ドライバ"もしくは"Type 4 …

System.DateTime.Ticksの精度と高精度タイマ(訂正)

昨日のエントリでは、System.DateTime#TicksとSystem.Diagnostics.Stopwatchクラスでは精度が出ないので使い物にならないというエントリを書いたが、少なくともStopwatchクラスに関しては私の計測方法、又はコードが悪かったために0msが戻っていただけであり…