Есть ли простой класс "виртуального файла" для .NET(С#, если источник доступен)?

196
25

В течение долгого времени я искал класс в .NET, у которого есть функциональность, которая делает его так, что операционная система думает, что есть файл (или каталог, или и то и другое, и т.д.) в определенном месте, - но все перехватчики передаются в функцию (или событие?) в коде.


Пример:


Если я перейду к "x:\fake_directory \", я увижу там файл "fake_file.txt". Если я дважды щелкнул по файлу, Notepad.exe запустится, и содержимое файла скажет "Hello World". "Hello World" придет из моего кода С#.


Пример того, что я надеюсь, что класс может сделать (может быть, это объяснит это лучше):


VirtualFile.Register("c:\my_file.txt",
delegate { return Encoding.Ascii.GetBytes("Hello World"); });

Это, конечно, упрощенная версия того, что я ищу... но, надеюсь, вы получите эту идею.


Причина, по которой это на 100% необходимо, - это работать с устаревшим кодом или проприетарными (и очень старыми устаревшими мусорными) системами, которые требуют чтения и записи в файловую систему для связи.

спросил(а) 2011-02-14T08:36:00+03:00 9 лет, 8 месяцев назад
1
Решение
100

Я считаю, что Dokan будет соответствовать вашим потребностям в виртуальной библиотеке файловой системы.
Dokan написан на С++, но есть библиотека .NET для взаимодействия.


Ссылка Dokan

С другой стороны, я считаю, что IPC будет лучше достичь необходимой функциональности, для которой вы привели пример в комментариях.

ответил(а) 2011-02-14T16:37:00+03:00 9 лет, 8 месяцев назад
72

В зависимости от того, будут ли ваши данные статичными или сгенерированы "на лету", вы найдете "Система обратного вызова" или Solid File System OS Edition подходит для ваших нужд (оба являются нашими продуктами). SolFS - это готовая к использованию виртуальная файловая система со встроенным контейнером. Система обратного вызова является виртуальной файловой системой без контейнера (вы предоставляете структуру и данные "на лету" ).

ответил(а) 2011-02-17T00:08:00+03:00 9 лет, 8 месяцев назад
Ваш ответ
Введите минимум 50 символов
Чтобы , пожалуйста,
Выберите тему жалобы:

Другая проблема