Я только что заметил, что класс DirectoryInfo
имеет свойство Extension
, унаследованное от FileSystemInfo
. Я смущен, почему это стало частью базового класса, а не только объявлено и реализовано в классе FileInfo
. То есть, поскольку в каталогах нет расширений, это кажется странным дизайнерским решением.DirectoryInfo.Extension - Почему это существует?
Кроме того, я просто работал с экземпляром DirectoryInfo
и заметил, что свойство Extension
показалось довольно произвольным. Похоже, это оригинальное имя папки (а не текущее имя), преобразованное в нижний регистр. Например, допустим, у меня была папка, которая изначально называлась MyCoolFolder. Позже я сменил название на MyGoodFolder. Свойство DirectoryInfo.Extension
, предположительно, основывалось бы на том, что я видел, читал .mycoolfolder. Зачем? Что может быть полезно в отношении свойства Extension
на DirectoryInfo
, и что полезно в том, чтобы иметь исходное имя в нижнем регистре?
Я думал, что это может быть просто недостаток, но я хотел убедиться, что не было какого-то тайного мира расширений каталогов, о которых я не знал. Мне нравится ваш дополнительный пример, хотя он кажется более философским. То есть не все всегда соглашались с тем, что NotSupportedException - плохая идея (в конце концов, они предоставили это исключение), в то время как я не думаю, что кто-то может сделать случай для каталогов, нуждающихся в расширениях. Это похоже на простой технический надзор. – bubbleking
Если у вас есть сомнения, если он хорош или не проверяет L в SOLID. –
Нет, у меня нет сомнений. Я согласен, что это плохой API, потому что вы не можете заменить массивы для других ILists, которые поддерживают Add(), и его можно было бы избежать с помощью другого подхода. Объявление расширения в FileSystemInfo, когда оно требуется только одному производному классу, просто похоже на клерикальную ошибку. Может быть, они планировали иметь более 2 производных классов? Поведение, реализованное в DirectoryInfo, делает его еще более странным. Исходное имя, чтобы опустить, с точкой в начале? Странный. – bubbleking