При вызове DirectoryInfo.GetDirectories( "." ) в экземпляре класса DirectoryInfo, который указывает на допустимую папку (исключая корни накопителей), результатом является массив DirectoryInfo, первый (и единственный) элемент указывает на недопустимый каталог с именем тот же самый, что и сам, под собой.
Например:
static void Main(string[] args)
{
DirectoryInfo di = new DirectoryInfo("c:\\temp");
DirectoryInfo[] dis = di.GetDirectories(".");
Console.WriteLine(dis[0].FullName);
}
Распечатывает несуществующий каталог:
c:\temp\temp
Я понимаю, что в Windows "." ссылается на текущий каталог. Это может быть приемлемо для меня, если метод вернул "c:\temp", но возврат поддельного подкаталога с тем же именем кажется абсолютно неправильным поведением.
Я должен уметь утверждать, что любой объект DirectoryInfo, возвращенный из этой функции, фактически существует.... right?!
Я декомпилировал класс с помощью .NET Reflector, но это приводит к этому методу
internal static string[] InternalGetFileDirectoryNames(string path, string userPathOriginal, string searchPattern, bool includeFiles, bool includeDirs, SearchOption searchOption)"
Что такое BEAST, и мне не хочется ходить по логике в моей голове. Это явно ошибка IMHO.
FYI - "*" работает так, как ожидалось, прежде чем кто-то спросит.