DirectoryInfo
クラスがFileSystemInfo
から継承されたExtension
プロパティを持っていることに気がつきました。なぜこれが宣言され実装されているのではなく、基本クラスの一部になったのか混乱しています。これはFileInfo
クラスで実装されています。つまり、ディレクトリには拡張子がないため、これは奇妙なデザインの決定であるようです。DirectoryInfo.Extension - これはなぜ存在するのですか?
さらに、DirectoryInfo
インスタンスで作業していて、Extension
プロパティがかなり恣意的に見えることに気付きました。これは、現在の名前ではなく、フォルダの元の名前で、小文字に変換されたようです。たとえば、元の名前のフォルダがあるとします。MyCoolFolder。その後、名前をMyGoodFolderに変更しました。 DirectoryInfo.Extension
プロパティは、おそらく、私が見たものに基づいて、.mycoolfolderと読んでください。どうして? DirectoryInfo
にExtension
プロパティを持つことに役立つものと、元の名前を小文字にすると便利なことは何ですか?
私はそれが単なる欠陥かもしれないと思っていましたが、私は知らなかったディレクトリ拡張の秘密の世界がないことを確かめたいと思っていました。私はあなたの追加の例が好きですが、それはより哲学的です。つまり、誰もがNotSupportedExceptionが悪い考えであることにいつも同意しているわけではありません(彼らはその例外を提供しました)が、私は誰も拡張機能を必要とするディレクトリに対してケースを作ることはできないと考えています。単なる技術的見落としに似ているようです。 – bubbleking
もし良かったり、LをSOLIDでチェックしたりしていないのであれば疑問があります。 –
いいえ、疑問はありません。 Add()をサポートする他のIListに代わるArrayを使うことができず、別のアプローチで避けられる可能性があるので、APIが貧弱だと私は同意します。 FileSystemInfoでExtensionを宣言するのは、派生クラスが1つだけ必要なときには、事務的エラーのように思えます。たぶん彼らは2つ以上の派生クラスを持つことを計画しましたか? DirectoryInfoで実装された動作は、それをさらに奇妙にします。元の名前は、最初にドットで、下に?奇妙な。 – bubbleking