2007年02月27日

ConfigurationManagerクラスのOpenExeConfigurationでの間違い

   このエントリーをはてなブックマークに追加 Clip to Evernote
C#で、デフォルトの exe.config とは異なる構成ファイルをオープンしようと思い、

System.Configuration.Configuration config = 
ConfigurationManager.OpenExeConfiguration(@"C:\Gushwell\sample.dll.config");

target = config.GetSection(sectionName) as MySection;

と書いてみたら、target が nullになってしまう。
configインスタンスは生成されているのに、おかしいなと思って、調べてみたら、config.FilePath プロパティが、@"C:\Gushwell\sample.dll.config.config" だった。

なんで、勝手に .config を付加するんだ! と思ったが、まあ、名前が、OpenExeConfiguration だから、しかたないか。

これは、単に、
@"C:\Gushwell\sample.dll"
とすればいいみたいだ。

ちなみに、おぎわら さんのページ
http://blogs.wankuma.com/ogiogi/archive/2006/07/28/34042.aspx
でも、おなじようなことが書いてあった...

ただ、現象的に異なるのは、おぎわらさんのページによると、
ConfigurationManager.OpenExeConfiguration()
の戻り値が null になっているということ。これは、おぎわらさんの勘違いだと思うけど...
  

Posted by gushwell at 23:15Comments(0)TrackBack(0)

2007年02月25日

コメントが反映されない?

   このエントリーをはてなブックマークに追加 Clip to Evernote
渋木宏明(ひどり) さんから、コメントが入っていたのだが、なぜか、Blogに反映されていない。
しかたないので、コメントを管理するページで、いったん、該当するコメントを「下書き」に保存したあと、再度、「公開」にしたら、ページに反映されました。これは、Libedoorブログのバグですかね。


追記
最初にアップした記事において、渋木さんの敬称が抜けていました。
ほんとうにごめんなさい。
  
Posted by gushwell at 11:13Comments(1)TrackBack(0)

2007年02月22日

アクセスが増えている

   このエントリーをはてなブックマークに追加 Clip to Evernote
しばらくぶりにこ、このブログのアクセス解析のページをみたら、2月になって、アクセス数が倍近く増えている。
どういった理由かは分からない。検索エンジンで、このブログが引っかかるようになったのかな?
まあ、どんな理由にせよ、喜ばしいことである。

  
Posted by gushwell at 22:55Comments(4)TrackBack(0)

2007年02月21日

自分自身のクラス名とメソッド名

   このエントリーをはてなブックマークに追加 Clip to Evernote
備忘:C#で自分自身のクラス名とメソッド名を取得する方法。ついでに、アセンブリ名も

class MyClass {
public void TestMethod() {

string assemblyName = Assembly.GetExecutingAssembly().GetName().Name;
StackTrace st = new StackTrace(false);
StackFrame sf = st.GetFrame(0);

string className = sf.GetMethod().ReflectedType.FullNam
string methodName = sf.GetMethod().Name;

Console.WriteLine(assemblyName);
Console.WriteLine(className);
Console.WriteLine(methodName);
}
}

StackTrace クラスを使うと、こんなことができるんですね。  
Posted by gushwell at 21:43Comments(4)TrackBack(0)

2007年02月19日

無線LANに接続できなくなってしまいました

   このエントリーをはてなブックマークに追加 Clip to Evernote
何の設定変更もしていないのに、無線LANに接続できなくなってしまいました。
タスクトレイのアイコンには、「接続状態:限定または接続なし」とポップアップメッセージが表示されます。
「修復」ボタンを押して修復を試みましたが、なんどやっても、IPアドレスの取得に失敗しましたと、なってしまいます。
「シグナルは非常に強い」状態なので、ルータとPC間は接続できているようですし、ハードウェアデバイスも問題なしと表示されています。
PCを再起動しても変化なし。

もう一台のPCは、何の問題もなく、インターネットに接続できています。
気づかない内に設定を変えちゃったかなと設定を見直しましたが、特におかしなところはないようです。

結局、ブロードバンドルータの電源を入れ直したら接続できてしまいました。
うーーん、なんだったんだろう。

Googleで「無線LAN 限定または接続なし」で検索したら、多くのページがヒットしました。結構この問題で悩んでいる人が多いみたいですね。
  
Posted by gushwell at 23:55Comments(2)TrackBack(0)

2007年02月18日

C#プログラミングレッスン 読者数1100名に

   このエントリーをはてなブックマークに追加 Clip to Evernote
「C#プログラミングレッスン」の読者数が、1100名を超えました。
といっても、ほとんど反応らしい反応もないので、中身を読んでくれているのかどうかは疑わしいのですが、とにかく、読者数の増加は励みになります。

ただ、何を書いたらよいのか、話題を探すのに苦労していますし、モチベーションを維持するのも大変です。

最近は、C#というよりは、.NET Frameworkの解説みたくなってしまってますし、適度な分量で完結させるってのも、なかなか難しいです。





  
Posted by gushwell at 16:14Comments(4)TrackBack(0)

2007年02月16日

ETW(Event Tracing for Windows)

   このエントリーをはてなブックマークに追加 Clip to Evernote
データ アクセスのトレース - ADO.NET 2.0 のトレース機能の概要からの抜粋です。

ETW とは?
Event Tracing for Windows は、Windows パフォーマンス モニタに比べてオーバヘッドの少ないトレースを提供することを目的としています。 通常、ETW の CPU 利用率は 5 パーセント以下で、毎秒 20,000 イベントまでのログをとることができます。 これはリアル タイムでのトレースを可能にするのに十分な速さです。 ETW はプロバイダベースのモデルを使用します。この場合、プロバイダはイベント システムにイベントを送信するシステム コンポーネントまたはアプリケーション コンポーネントです。 イベント プロバイダの例としては、Active Directory、IIS、ASP.NET などがあります。



これを読む限りかなり良さそうです。
ただ、いかんせん、資料が少なすぎです。本当に良いものならば、もっと日本語の資料を公開してほしいです。
  
Posted by gushwell at 14:41Comments(0)TrackBack(0)

2007年02月15日

WMIのMethodInvokeの結果をキャストすると例外が発生する

   このエントリーをはてなブックマークに追加 Clip to Evernote
http://msdn2.microsoft.com/ja-jp/library/ms257364(VS.80).aspx

に記載されているWMIサンプルコードの、一部を変更し、実行したところ、InvalidCastExceptionが発生します。

以下、C#のコードの一部。

ManagementObject classInstance =  new ManagementObject("root\\CIMV2",
     "Win32_Service.Name='PlugPlay'",
     null);
ManagementBaseObject outParams = classInstance.InvokeMethod(
"StartService", null, null);
object o = outParams["ReturnValue"];
int n = (int)o;  // ここで例外発生

 ※最後の2行以外は、サンプルコードそのままです。

ちなみに、最後の行を以下の2行に置き換えてみました。

Console.WriteLine(o.GetType().ToString());
Console.WriteLine(o.ToString());

すると、

System.Int32
10

が表示されますので、キャストできると思うのですが、キャストすることができません。

何か、大きな勘違いをしてるのかな?
  
Posted by gushwell at 23:36Comments(0)TrackBack(0)