que tienen una interfaz define como:¿Está bien pasar una secuencia a varios métodos?
public interface IClientFileImporter
{
bool CanImport(Stream stream);
int Import(Stream stream);
}
La idea es tomar cualquier secuencia de archivo y ejecutarlo a través de una serie de implementaciones de esta interfaz para determinar cuál debe manejar el archivo. Algunas de las implementaciones pueden buscar una determinada fila de encabezado, mientras que otras pueden buscar una determinada secuencia de bytes, etc. ...
Mi pregunta es, ¿está bien pasar una secuencia así siempre que nunca cierre ¿eso? Cada método debería ser responsable de restablecer el flujo a la posición 0 si es necesario, pero ¿hay algún otro problema potencial (aparte de la seguridad del hilo)? Este código realmente huele, IMO, pero no estoy seguro de una mejor manera de hacerlo.
No creo que sea un mal concepto en primer lugar. No sabe qué necesitarán las implementaciones de la transmisión para que todo el flujo tenga sentido. Para garantizar que la implementación no se meta con la transmisión, podría implementar algún tipo de envoltorio alrededor de Stream (derivado de la transmisión en sí) que prohíba cualquier método que modifique la transmisión subyacente o lo que sea que necesite. Además, no necesitaría que la implementación restablezca la posición de la secuencia. La persona que llama de CanImport/Import puede hacerlo. Combinados, esto garantiza que la importación no puede dañar la transmisión subyacente. –