2008年11月30日

XMLからDictionary型への変換

   このエントリーをはてなブックマークに追加 Clip to Evernote
<root>
   <key1>値1</key1>
   <key2>値2</key2>
   <key3>値3</key3>
   <key4>値4</key4>
</root>

といったXMLファイルに対して、以下のようなコードを書いた。
XDocument xdoc = XDocument.Load("sample.xml");
var query = from pair in xdoc.Root.Elements()
            select new {
                Key = pair.Name.ToString(),
                Value = int.Parse(pair.Value)
            };
var dict = query.ToDictionary<string,int>(
    (x => x.Key), (x => x.Value));
foreach (var d in dict) {
    Console.WriteLine(d.Key + "=" + d.Value);

XMLからDictionary型への変換をしているわけだ。
でも、ToDictionaryの箇所で、 「ジェネリックの第1型引数のTSourceが抜けている」のでエラーのなってしまう。
匿名クラスなんだから、ここで、型を書くわけにはいかないし...
ということは、匿名クラスじゃなくて、KeyValuePairを使えばいいんだな。
で、書いたコード。
XDocument xdoc = XDocument.Load("sample.xml");
var query = from xbook in xdoc.Root.Elements()
            select new KeyValuePair<string, int>(
                xbook.Name.ToString(), 
                int.Parse(xbook.Value));
var dict = query.ToDictionary<KeyValuePair<string,int>,string,int>(
    (x => x.Key), (x => x.Value));
foreach (var d in dict) {
    Console.WriteLine(d.Key + "=" + d.Value);

うーん、ToDictionaryが冗長すぎる。
でも、よくよく考えたら、ジェネリックメソッドの型推論には、匿名型もOKなんだから、

XDocument xdoc = XDocument.Load("sample.xml");
var query = from pair in xdoc.Root.Elements()
            select new {
                Key = pair.Name.ToString(),
                Value = int.Parse(pair.Value)
            };
var dict = query.ToDictionary(
    (x => x.Key), (x => x.Value));
foreach (var d in dict) {
    Console.WriteLine(d.Key + "=" + d.Value);

で良かった。
カギカッコが無くなってすっきりした。   

Posted by gushwell at 22:21Comments(2)TrackBack(1)

2008年11月25日

XPからVistaへ

   このエントリーをはてなブックマークに追加 Clip to Evernote
USBの外付けHDDを購入したのを機に、自宅のノートPCのOSをXPからVistaに入れ替えることにしました。
そもそもこのPCを買ったのは、Vistaを使いたかったからなのですが、XPで困ることがなかったので、XPを使い続けてました。

インストールはアップグレードインストールではなく、クリーンインストールにしました。
BIOSを最新の状態にして、OSをインストール。これは何の問題もなくすんなりと終わりました。
その後、ThinkPad関連のソフトをインストール。これも、System Update というソフトが、自動でソフトをダウンロードしインストールしてくれるので、時間はかかったけど、大きな問題はありませんでした。ただ、指紋認証の機能が動いていないみたい。でも、外に持ち出すことはほとんどないので、このままでもいいかな。

最後に、データのリストアとアプリのインストール。これが一番面倒くさかったけど、必要最低限のアプリだけをいれた状態なので、今のところ起動時間が、XPの時よりかなり早くなったような気がします。
いつまで、この状態が続くのかな。
  
Posted by gushwell at 21:31Comments(0)TrackBack(0)

2008年11月22日

IsVirtual と IsFinal

   このエントリーをはてなブックマークに追加 Clip to Evernote
MethodInfoには、IsVirtualプロパティがあるけど、これが trueだからって、オーバーライドできるとは限らないみたい。

あるインターフェースを実装したクラスの当該メソッドは、共通言語ランタイムでは、virtual としてマークしなくちゃいけないので、特別に、virtual final としてマークするようです。

なので、IsVirtula == true かつ IsFinal == false
じゃないと、実際にはオーバーライドできないということです。

  
Posted by gushwell at 17:49Comments(3)TrackBack(0)

2008年11月19日

FontFamilyの一覧を得る

   このエントリーをはてなブックマークに追加 Clip to Evernote
PCにインストールされているフォントのFontFamily一覧を取得するコードです。

InstalledFontCollection fontCollection = new InstalledFontCollection();
FontFamily[] fontFamilies = fontCollection.Families;
StringBuilder sb = new StringBuilder();
foreach (FontFamily fontFamily in fontFamilies) {
sb.AppendLine(fontFamily.Name);
}
textBox1.Text = sb.ToString();


  
Posted by gushwell at 20:50Comments(0)TrackBack(0)

2008年11月11日

IO DATA HDP-U250S(K)

   このエントリーをはてなブックマークに追加 Clip to Evernote
ノートPCのHDDの空き容量が少なくなってきたので、
I-O DATA機器 USB 2.0/1.1対応 バスパワー駆動ポータブルハードディスク 250GB ブラック HDP-U250S(K)
を購入

これで、VS2010とWindows7を入れられそうだ。

それにしても、VS2010の必要ディスク容量が75GBって異常だと思うんだけど。
もともと僕のノートPCは、80GBしかないから、はなから諦めていたんだけど、これで試せそうです。
  
Posted by gushwell at 20:14Comments(0)TrackBack(0)

2008年11月05日

Visual Studio 2008のセットアッププロジェクトで作成するショートカットファイル

   このエントリーをはてなブックマークに追加 Clip to Evernote
Visual Studio 2008のセットアッププロジェクトでインストーラを作成した場合、このインストーラを使って作成されるショートカットファイルが、アドバタイズショートカットになってしまうため、ショートカットのアイコン上にファイルをドロップしてもそのファイルを開くことができません。

どうしたもんかと調べていたら、
アドバタイズショートカットではなく、普通のショートカットを作成する
のページが見つかりました。

普通のショートカットを作成するには、方法は2つあり、

・msiexecのコマンドライン引数で指定する
・Windows InstallerデータベースのPropertyテーブルで指定する

があるそうです。
msiexecのコマンドライン引数で指定するには、

msiexec /i DISABLEADVTSHORTCUTS=1

とすればいいみたいです。試してみたら無事できました。
後者のほうは面倒そうなので確かめていません。
  
Posted by gushwell at 21:04Comments(0)TrackBack(0)

2008年11月02日

C#デザインパターン

   このエントリーをはてなブックマークに追加 Clip to Evernote
このブログにアップしたデザインパターンのコードをこちらのサイトに移す作業をしていますが、やっと19個のパターンを移し終えました。
残るはあと4つです。
1週間に一つのペースで移しているので半年もかかっていますが、なんとか今年中には終わりそうです。

それと、メルマガの発行は今週から再会します。


  
Posted by gushwell at 22:00Comments(0)TrackBack(0)