C#
Buttonのクリック処理が動作している最中に他のButtonやコントロール等をクリックした場合でも、 そのクリック操作をすべてシカトしたいなんてことはよくあるお話。 なぜクリック処理中のクリック操作がシカトされずに処理されてしまうのかと言えば、 クリッ…
まずは、アスペクト指向プログラミング(AOP)的な用語の簡単な説明とか。アドバイスとはアスペクト指向で言うところのアドバイスとは、「どのような処理を行うか」のことを指す。 コード(ある処理)に対してインターセプトを行い、そこで「何」を行うのか、そ…
マネジーリソースとアンマネージリソース.NET Frameworkで扱うリソースの種類は、大きく2つに分けることができる。 CLRが管理するマネージリソース(GCヒープ)と、CLRが管理しないアンマネージリソース。 ガベコレによってオートマチックに解放されるのが…
Excel関連でググってみると、「Excelのプロセスが残ってしまう・・・。」といった現象に陥ってる人が多いように思う。 Excelのプロセスが残らないようにするには、利用したCOMオブジェクトの参照を適切に解放してあげる必要がある。 例えば、レイトバインデ…
VB.NETだとCreatObject関数を使って、暗黙の遅延バインディングを利用することによって、 お手軽に実現できる出来るExcelの操作も、C#で実現するとなると、ちょっと面倒くさいことになります。 事前バインディングでも実装することもできるが、事前バインデ…
実行中のアプリケーションが何かしらのタイミングで非アクティブとなり、 別のプロセスウィンドウの裏へ隠れてしまうようなことがある。 対応方法としては、単にFormをアクティブにすればよいのだが、 this.Activate() だけでは、うまく Form が前面に移動し…
.NET Framework2.0 で新しく追加された、 System.Data.SqlClient.SqlBulkCopyクラス*1もサポートされていないわけだが・・・。 これって、.NET Compact Frameworkだからこそ必要なクラスだと思うのだが。 (;゚Д゚)ポカーン そもそもSQL Server 2005 Compact Editi…
例外の検出.NET Framework では、他の一般的な水準のオブジェクト指向プログラミング言語と同じように、 構造化例外処理を利用して例外を適切に処理することができる。 構造化例外処理とは、例外と保護されたコードブロック、およびフィルタを含む制御構造に…
例外管理ポリシーアプリケーションの内部で発生した例外を管理する際には、いくつか考慮すべきことがある。 まず、「発生した例外をどのタイミングで捕捉するのか」、「捕捉した例外をどのように処理するのか」、 そして、「捕捉した例外をどのように伝播さ…
公私共にモチベーション低いですが、久しぶりに独りよがりなデザパタ講座です。 今回はGoFデザインパターンより、「Proxyパターン」をぬるーく解説します。 ■Proxyパターンの概要■ Proxyとは「代理人」という意味です。 現実の世界での「代理人」のイメージ…
単純にSystem.Windows.Forms.Formを継承したFormに配置したTextBoxのTextプロパティに対して、 特定のクラスのプロパティをバインドする方法の1つを示します。 方法その1、.NET Framework 1.1の場合。「プロパティ名 + Changed」 イベントの提供これだけで…
遅ればせながら、Visual Studio 2008 Beta 2 日本語版をインストールしてやったわブワハハハア!!(壊 (ダウンロードに2時間、DVD-R焼くのに20分、VSインストールに1時間、MSDNインストールに1時間・・・。) Visual Studio 2008 Beta 2 日本語版 http://www.…
マイクロソフトのサポートオンラインによると 入れ子になったユーザーコントロールの DesignMode プロパティは、 False に Visual Studio .NET または Visual Studio 2005 に常に設定されます。 現象 Microsoft Visual Studio .NET または Microsoft Visual …
アーパートメントモデルの種類COMコンポーネント*1は、大きくシングルスレッドアパートメントモデル(STA)と マルチスレッドアパートメントモデル(MTA)に分けることができる。 レンタルスレッドアパートメントモデル(RTA)というのもあるようですが、詳細…
※後に書いた、「FlagsAttributeとビット演算のちょっとしたレシピ」はこちら →http://d.hatena.ne.jp/zecl/20081223/p1 基本的ではありますが、.NETにおける、ビットタイプの列挙型のお話。 Enum型にFlagsAttribute属性を与えると、ビットフィールドとして扱…
今日は、.NETにおけるクローンオブジェクトなお勉強です。 インスタンスの中身をコピーする方法は、大きく分けて3つあります。 1つは、何も考えずにインスタンス内のメンバを手動でコピーする方法。 2つ目は、System.Reflectionを利用して、メンバをコピ…
後に書いた、デザインパターン第15回「Iteratorパターン」その2はこちらです。 なんだかんだで10回目を迎えましたデザパタ講座です。 さて今回は、GoFデザインパターンより「Iteratorパターン」をぬるーく解説します。 Iteratorパターンは、集約オブジ…
画面オブジェクト(System.Windows.Forms.Formの派生クラス)の、 特定のプロパティをシリアル化してXMLに保存したり読み込んだりする機能について、必要に迫られました。 特定のプロパティを抽出してSerializableなクラスをつくり、それを画面オブジェクトの…
Webサービスでクラス渡しを実現するためのメモSystem.Xml.Serialization.XMLSerializer や、 System.Runtime.Serialization.Formatters.Soap.SoapFormatter というクラスがある。XMLSerializerはPublicなフィールドのみがシリアライズ対象となって、 SoapFor…
■中間コードによる、大文字、小文字の識別 2つの言語の違いを比較する際に、まず思い浮かぶのは、両者の構文の相違である。 まず、構文を語る上で避けて通れない大きな違いのひとつは、 C#では大文字と小文字の違いが区別されるのに対し、VB.NETでは区別さ…
ボックス化(boxing)とは、基本型(primitive type)からオブジェクト型(object type)へ変換することです。 その逆ををボックス化解除(unboxing)と呼びます。 これはつまり、値型と参照型を必要に応じて相互変換する機能です。 boxingは値型を参照型に変換する…