У меня есть интерфейс, определяемый как:
public interface IClientFileImporter
{
bool CanImport(Stream stream);
int Import(Stream stream);
}
Идея состоит в том, чтобы взять любой поток файлов и запустить его через ряд реализаций этого интерфейса, чтобы определить, какой из них должен обрабатывать файл. Некоторые из реализаций могут искать определенную строку заголовка, в то время как другие могут искать определенную последовательность байтов и т.д.
Мой вопрос в том, нормально ли проходить такой поток, пока я его никогда не закрываю? Каждый метод должен был бы отвечать за сброс потока в позицию 0, если это необходимо, но есть ли другие потенциальные проблемы (кроме безопасности потоков)? Этот код действительно пахнет, ИМО, но я не уверен в лучшем способе сделать это.