書籍『C#プログラミング入門』サポートページ
SampleCode.zip
※ 第9章の「LINQ」の節で利用している、NorthwindObjectsクラスのソースコードも含まれています。
書籍「C# プログラミング入門」を読みました。 いろいろ備忘録日記
「C#プログラミング入門」を読んで HIRO's.NET Blog
「C#プログラミング入門」を読ませていただきました。 もり ひろゆきの日々是勉強
本書は、C#の言語機能に焦点をあてた解説書のため、Visual Studioの操作については詳しく触れていません。 ここでは、書籍に書けなかったVisual StudioのプロジェクトにC#のクラスファイルを追加する手順を、 第2章の「リスト2-10」を例に取り示します。
- 新規プロジェクト(コンソールアプリケーション)を作成します。
プロジェクト名はPersonSampleとします。

- メニュー[プロジェクト]-[クラスの追加]を選択します。
(以下の図のように、ソリューションエクスプローラで、プロジェクトを右クリックし、[追加]-[クラス]を選択しても同様です)

- 新しい項目の追加ダイアログで、名前を「Person.cs」と入力し、[追加]ボタンを押します。

- PersonSampleプロジェクトに、Person.csファイルが追加されますので、Person.csファイルにPersonクラスを以下のように実装します。
- ソリューションエクスプローラのProgram.csをマウスでダブルクリックします。Program.csが開き、コードが編集可能になります。

- Program.csを以下のように変更します。
- [ファイル]-[すべてを保存]を選択し、プロジェクトを保存します。
- F5キーを押し、デバッグ実行します。 コンパイルエラーが出ず、Program.csから、Person.csで定義したPersonクラスにアクセスできることを確認します。
2. 具象クラスに依存しないプログラミング (166ページの補足)
P166の「こうすることで」というのが、どういうことなのかについて、もう少し詳しく説明します。
「こうすることで」というのは、
「LoggerFactoryクラスを定義し、Createメソッドで、抽象クラスであるLogWrityerクラスを返すようにすることで」ということを指しています。
つまり、LoggerFactoryクラスを利用して生成したオブジェクトは、ConsoleLogWriterクラスであっても、PlainTextLogWriterクラスであっても、その他の派生クラスであってもすべて、継承元のLogWriterクラスとして扱うこと
ができます。
具体的には、
ではなく、
と書けるということになります。
コード上、ConsoleLogWriterというクラスが現れるのは、LoggerFactoryクラスのの中だけですから、後から、PlainTextLogWriterクラスに変更するのは、一か所変更するだけ済みます。
EventLogWriterクラスに変更するのも同様ですね。
「派生クラスに依存することなく」というのは、そういったことを意味しています。LoggerFactory.Create();を使うことで、具象クラス(派生クラス)クラス名に縛られることなく、プログラムコードが書けますので、後からの変更に強い
プログラムにすることができるのです。
後段の「より実践的にするには」以降について補足しますと、例えば、LoggerFactory クラスを以下のように定義します。
これで、App.configで
のように、ログの出力先を指定できるようにすれば、コードの修正なしに、App.Configファイルを変更するだけで、ログ出力先を変えることが可能になります。
※ このコードをビルドするには、System.Configuration を参照設定に追加する必要があります。
繰り返しになりますが、ConsoleLogWriter 、PlainTextLogWriter、EventLogLogWriter
などのクラス名が記述されるのは、LoggerFactory クラス内だけで、実際にログを出力するところでは、これらの抽象クラスである LogWriterクラス
を記述することになります。
ちなみに、リフレクションという機能を使うと、LoggerFactory クラスからもConsoleLogWriter 、PlainTextLogWriter、EventLogLogWriterといった具象クラス名を取り除くことが可能です。その際は、App.configに生成するクラスの情報
を記述することになります。
リフレクションについては、私が発行しているメールマガジンのバックナンバー「リフレクション編」をご覧いただければと思います。
以下のURLからダウンロードできます。
http://gushwell.ifdef.jp/magArchive.html
