Je voudrais utiliser le même code pour copier des fichiers sur un serveur FTP et via USB. J'ai déjà écrit du code, qui utilise maintenant des fonctions de l'espace de noms System.IO
. Pour minimiser la duplication de code, j'ai énuméré les fonctions dont j'ai besoin de l'espace de noms system.IO, et je pensais à concevoir une interface exposant des fonctions similaires, puis deux classes, une pour les opérations de fichiers FTP, et un pour les locaux.Interfaces dans .Net
J'ai quelques questions au sujet des interfaces bien:
- pourrait concevoir mon interface afin que le
File.*
etDirectory.*
organisation soit préservée (de sorte que les routines déclarées dans l'interface suivent la même hiérarchie que dans l'espace de noms IO) ? - Existe-t-il un moyen, pour les opérations locales, de mapper simplement les fonctions de l'espace de noms IO aux fonctions d'interface correspondantes (en écrivant quelque chose comme
Sub IO.File.Delete Implements IOInterface.File_Delete
)? - Puis-je déclarer quelque chose comme
Dim IOHandler As IOInterface
, en supposant queIOInterface
est le nom de mon interface? Puis-je écrire à la foisIOHandler = New LocalIOHandler
etIOHandler = New FTPIOHandler
, en supposant queLocalIOHandler
etFTPIOHandler
sont mes deux classes implémentant leIOInterface
?
Merci!
CFP.
Bien que cela ne soit pas incorrect, le downcast doit être évité et avoir une odeur. –
D'accord, mais parfois, il est nécessaire et il est important de savoir que l'objet stocké est toujours du type d'implémentation non seulement du type d'interface. –
Alors les gens me disent :) mais ils sont aussi presque tous de bons exemples de quand. Cela dit je pense que vous aviez raison de mentionner la possibilité ici car il semble que je suis très nouveau à –