C#と諸々

C#がメインで他もまぁ諸々なブログです
おかしなこと書いてたら指摘してくれると嬉しいです(´・∀・`)
つーかコメント欲しい(´・ω・`)

2007/06/09 18:24
この前、PowerShell で入れ子型にアクセスする方法がわからなくてはまった。
その時は System.Environment クラスの GetFolderPath メソッドを使おうとしていたんだけど、このメソッドのパラメータの型は System.Environment.SpecialFolder 列挙体。この列挙体は System.Environment の入れ子型として定義されている。


最初、この列挙体の値を

[System.Environment.SpecialFolder]::MyMusic
といった感じで取得できると思っていたら、ダメだった。System.Environment.SpecialFolder なんていう型は存在しないと怒られる。


CLR が入れ子型をどのように扱っているか見てみると、その入れ子型を含んでいる型名と入れ子型名を "+" で繋いでいるようだ。
つまり System.Environment の入れ子型 SpecialFolder なら System.Environment+SpecialFolder となる。
PowerShell で

[System.Environment+SpecialFolder]::MyMusic
と入力して Enter を押すと、SpecialFolder 列挙値を取得できた。


まぁ、PowerShell だと列挙値の指定の際に、文字列でその列挙値の名前指定することもできるから、今回の場合は

[System.Environment]::GetFolderPath("MyMusic");
って入力すればそれで事足りた訳だけど、すっかり忘れていた^^;
タグ: .NET PowerShell











トラックバックURL↓
http://csharper.blog57.fc2.com/tb.php/135-79160c7c