2010年07月27日

Microsoft.Web.Administration API

   このエントリーをはてなブックマークに追加 Clip to Evernote

C:\Windows\System32\inetsrv\Microsoft.Web.Administration.dll

をプロジェクトの参照設定に加えると、

Microsoft.Web.Administration API

が利用可能になります

例えば、以下のようなコードを書くと、


IIS の "Default Web Site" に、アプリケーションを追加できます。
  

Posted by gushwell at 22:28Comments(0)TrackBack(1)

2010年07月25日

ナイト(騎士)の最適配置問題

   このエントリーをはてなブックマークに追加 Clip to Evernote
チェスのナイト(騎士)を以下の規則に従って配置するパズルです。

1.すべての空きがどれかのナイトの効き筋になっていること。
  複数のナイトから効いていてもかまわない。
2. ナイト同士は互いに効き筋にはない。
3. なるべく少ない数のナイトで配置する。


「プログラミング小品集」に掲載する中では、久しぶりに長めのプログラムでした。
そして実行時間も...
この手のパズルは解を求めるのに時間がかかるのは仕方がないとは思うけど、もう少し速くしたかったなー。


求まった解を見てみると、対称性をもったきれいな配置だなーって思います。

ところで、デバッグ中に、chromeで動かしてみたら、ブラウザがエラーを表示してしまいました。
どうも、長時間 Silverlightからの応答がないのが理由のようでした。
そのため、Backgroundworkerを使い、応答なしを回避しました。IEだと大丈夫なのにね。

ソースコードはこちらに掲載しています。   
Posted by gushwell at 22:39Comments(0)TrackBack(0)

2010年07月21日

StringCollection を string[] に変換

   このエントリーをはてなブックマークに追加 Clip to Evernote

たぶん、ほとんど使われなくなったと思われる StringCollection クラスですが、 Visual Studio のプロジェクトの Properties フォルダにあるSettings.settings で設定した文字列リストは、StringCollection 型になっています。

これを stringの配列にしたいときのC#のコードです。


Enumerable.Cast メソッドで IEnumerableに型変換してあげれば、 LINQでおなじみの ToAray()メソッドで、string[] に変換できます。

C#2.0のときは、StringCollection.CopyToを使ったりしてましたが、Cast使うほうが直感的に 書けます。

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

2010年07月19日

DataSetデザイナーで「列には有効なDataTypeが必要です」のエラー

   このエントリーをはてなブックマークに追加 Clip to Evernote
型付DataSet の プロパティの型を、独自に定義したenum型に変更していたのだけれど、
プログラムを修正していたら、いつのまにか、DataTypeが
「列には有効なDataTypeが必要です。」
というエラーメッセージが出て、DataSetデザイナーが開かなくなってしまいました。

初めは、どこが悪いのかまったくわからず Visual Studio 2008を起動しなおしたり、
DataSet.xsd をソース管理から再取得したりしましたが、エラーは出続けたままです。

いろいろ調べて、xxxxDataSet.xsd ファイル(これは、xmlファイルです)の


の部分が正しくないことに気がつきました。
リファクタリングで、このAbcEnum 型が定義されているプロジェクトを、別のプロジェクトに移したのが原因でした。

DataSetデザイナーが、AbcEnumの型を読み込もうとしても、指定したアセンブリには、その AbcENum型は存在しないので、

「列には有効なDataTypeが必要です。」

というエラーになっているようでした。
xxxxDataSet.xsd の中身を手で書き直すことで、無事DataSetデザイナーを開くことが出来ました。
  
Posted by gushwell at 23:20Comments(0)TrackBack(0)

2010年07月11日

実行中のアセンブリのパスを得る

   このエントリーをはてなブックマークに追加 Clip to Evernote


で、現在実行中のコードを格納しているアセンブリのパスを得ることができます が、このcodeBaseは、

file:///C:/Sample/bin/Debug/CodeBaseSample.EXE

といった形式で、Uri形式の文字列です。
これを

C:\Sample\bin\Debug\CodeBaseSample.EXE

と通常のローカルパスの形式に変換するには、


と、Uri.LocalPathプロパティを使います。
  
Posted by gushwell at 23:58Comments(2)TrackBack(0)

2010年07月06日

あるオブジェクトが派生型かどうかを知りたい

   このエントリーをはてなブックマークに追加 Clip to Evernote


というクラスがあった時に、
あるオブジェクトの型が、BaseClassの派生型かどうかを調べるコードをC#で書きたい場合がたまにあります。


だと、obj が BaseClassのインスタンスでも、この if 文が成り立ってしまうので宜しくないです。


だと、ちょっとダサい。
そんなときは、そのものずばりのメソッド IsSubclassOf を使います。

  
Posted by gushwell at 23:01Comments(0)TrackBack(1)