2009-01-28 8 views

Répondre

1

N °

FileStream est une implémentation concrète.

Mais c'est une méthode privée qui devrait donc être assez facile à changer puisque vous pouvez trouver tous les usages internes? Suggérer de remplacer la signature de la méthode par Stream plutôt que FileStream. Bien ... sauf si vous créez un fichier temporaire, écrivez-le puis lisez-le en mémoire.

+0

C'était juste un exemple. Celui-là est privé et les autres sont publics. Et il y en a beaucoup. – Andre

1

Étant donné que vous ne pouvez pas modifier la signature de fonction pour accepter un type plus générique .. Je suggérerais d'écrire dans un fichier temporaire, puis de lire le contenu dans une instance MemoryStream.

+0

Excuses; Je vous ai battu à la solution de fichier temporaire. Nous devons avoir frappé 'soumettre' en même temps :) –

0

No.

Si vous n'avez pas accès, vous pouvez utiliser le réflecteur pour savoir comment ils fonctionnent et mettre en œuvre votre propre version pour un MemoryStream. Que cela soit légal est une autre affaire ...

+0

"Que ce soit légal" - Je suis sûr que personne ne l'arrêtera :) – configurator

0

Non. FileStream n'expose pas un constructeur qui peut être appelé de sorte que vous ne pouvez pas en hériter pour l'émuler.

0

Suggestion;

Renommer la méthode comme celui-ci

private int WriteLogikParameterTyp_Ex(Stream stream); 

recréer ensuite la signature originale comme;

private int WriteLogikParameterTyp(FileStream filestream) 
{ 
    return WriteLogikParameterTyp_Ex(filestream); 
} 
+1

Pourquoi ne pas simplement changer la signature de la méthode? Il ne casserait pas existant en utilisant le code puisque FileStream est dérivé du courant ... – configurator

+0

Je suppose que puisqu'il "ne peut pas changer la méthode" il ne peut pas le faire déléguer non plus :). Que le doigt le plus rapide gagne! :) – Gishu

Questions connexes