.net

配列と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にしておく等、適切にプロパテ…

継承と取捨選択

Visual Studio 2008にて、敢えて予備知識なしでWindows Presentation Framework(以降WPF)アプリケーション用のプロジェクトを作り、WindowsFormsやASP.NETと比べてどれだけ作業の手順や勝手が違うのかを調べていたのだが、テキストボックスをとボタンをフレ…

serverside Office

Office のサーバーサイド オートメーションについて結局、サーバサイドでOfficeドキュメントをダイナミックに生成する用途としてオートメーションは使うなってことだよな。(サードパーティの商用コンポーネントを使えって書いているようにも見える) Microsof…

進歩、進化

Visual Studio 2005のβからフィードバックを行ってきた身としては、その後継版としてのVisual Studio 2008にはどれだけのフィードバックが反映されているのだろうかと楽しみにしてきたのだが、今のところ先日書いたデバッグトレースが軽くなったこと以外にあ…

Poi.NET

オートメーションサーバはできれば使いたくないな、と思って駄目元でキーワード検索したんだが、ちゃんとあるのね。Poi.Netしかしドキュメントを見るとExcelシートには対応していないようだ。

Visual Studio Team System 2008 β2 Team Suite日本語版 その4

インストールは無事完了したが、Visual Studio 2008対応を歌っているはずのReSharper 3.0が有効にならない。仕方が無いのでReSharperを再インストールすると今度はVisual Studio 2005側でReSharperのアセンブリが読めないと怒られる。JetBrainsのForumを覗い…

C#2.0->3.0 (HashSet)

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

踏んだり蹴ったり

そうこうしていたら、またもやMSDN Forumsに接続できなくなっているようだ。今回はCookieを削除しても駄目。Pingも通らないので Pinging forums.microsoft.akadns.net [207.46.236.188] with 32 bytes of data: Request timed out. Request timed out. Reque…

Visual Studio Team System 2008 β2 Team Suite日本語版 その3

会社のPC(Windows XP with Service Pack2)にもインストール中。自宅PCでもそうだったが、.NET Framework 3.5のインストールで暫くだんまりになるのは一体何をしているのだろうか。ランタイムインストールに時間がかかるのはアプリケーションの配布を考えた場…

Visual Studio Team System 2008 β2 Team Suite日本語版 その2

なんだかんだでインストールした。WPFデザイナの起動(特に初回)が死ぬほどに遅いんだがこんなもんなのか? それとも私の使っているPC(Xeon 2.4Ghz×2 + 2GB MEM)が時代遅れなだけなのか。 Visual Studio 2005の時も慣れるまではかなりストレスを感じたが今回の…

Visual Studio Team System 2008 β2 Team Suite日本語版

β2の日本語版がサブスクライバダウンロードにアップされたので、いろいろと試してみようと思っているのだが、ちょっと躊躇している。というのもアップされたのが"Team Suite"だからだ。Team Suiteなぞまず使わないのでできれば普通のProfesional版を評価した…

]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だと上手く行くんだがなぁ。…

WPFの正しい用途

一目で分からない WPF - NyaRuRuの日記EclipseのWPF版があるのは知っていたのだが、WPFはスルーしていたのでスクリーンショットを見るのは、実は初めてだ。 WPFを紹介するデモはたくさんあるが、グラフィクスがリッチであることを強調しているものが殆どであ…

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…