2004-05-19 (Wed)
_ NotSupportedException クラス
.NET Frameworkを使っていると、ちょくちょくこの例外にお目にかかる。
たとえば、Stream.Length プロパティとか。
NotSupportedException Stream から派生したクラスがシークをサポートしていません。
[Stream.Length プロパティより引用]
つまり、StreamのサブクラスでもLengthが実装されてないかもしれないということだ。 こんな設計にされたら、せっかくの静的な型チェックも意味がない。
LengthをStreamから他のクラスに移さないのには何か深遠な理由があるのだろうか。
_ WhiteRabbit [こんにちは。C#のヘジルスバーグはDelphiの設計者でもあったので、VCLのTStreamに似てるのではないでしょ..]
_ shugo [なるほど。 でもどうしてTStreamはそういう設計だったんでしょうね。 弱い型の言語のライブラリを参考にしたからと..]
_ WhiteRabbit [うーん、わかりません。ただ、最初の頃は TStream の継承クラスはシークできるものばかりだったので(TFileS..]
_ 菊池 [んー、OSその物がそうなので、という事では。 Socketを ReadFile / WriteFile でアクセスで..]
_ shudo [JXTA (のJava実装) でも、同じようなフラストレーションを味わったなあ>NotSupportedExcept..]
_ shugo [んー、下のレイヤーに不都合があっても、できるだけそれを隠蔽するのがよいライブラリなんじゃないでしょうか。 CanSe..]
_ shugo [> 同感。 やっぱそうですよねえ。 ちなみにshudoさんは私とは別人です。まぎらわしくてすみません。]
_ 菊池 [>んー、下のレイヤーに不都合があっても、できるだけそれを隠蔽するのがよいライブラリなんじゃないでしょうか。 良..]
_ shugo [菊池さんがそういう(クラスが細分化された)ライブラリをお好きでないというのは理解できる部分もあるのですが(Rubyの..]