Sono curioso di cosa sia così abissale riguardo al design dello spazio dei nomi System.IO
. Certo, scegliere una particolare interfaccia o classe può essere in qualche modo un esercizio arbitrario, ma non ho familiarità con il problema di dover passare le stringhe dappertutto.
Forse potresti dare qualche informazione in più sul tuo particolare problema?
EDIT
È sembrano indicare che si desidera le classi che si basano sullo System.IO
spazio dei nomi che vi permetterà di testare senza scrivere sul file system. Non vedo come si possa testare adeguatamente una funzione che scrive sul file system senza, beh, scrivendo sul file system. Se si desidera testare la logica da una prospettiva di scrittura, quindi consentire alle funzioni di prendere System.IO.Stream
o System.IO.TextWriter
, a seconda di quale sia più appropriato. Ciò ti consentirà di testare i vari componenti del tuo codice senza necessariamente avere alcun impatto esterno; basta passare un System.IO.MemoryStream
anziché uno System.IO.FileStream
. Ovviamente non ti imbatterai in problemi come l'esaurimento dello spazio, l'accesso negato, ecc., Ma non potrai mai incontrare quegli errori senza eseguire live dal file system. Ecco perché è possibile esporre le funzioni esterne che richiedono System.IO.FileInfo
o un percorso di stringa (o un array/IEnumerable<>
di entrambi, qualunque sia il necessario) in grado di fornire un altro livello di test in tempo reale.
Lo spazio dei nomi System.IO
è piuttosto ben popolato e non ho mai utilizzato un approccio particolarmente non OO.
fonte
2009-07-07 19:33:59
Sarei interessato a sentire la tua giustificazione affermando che lo spazio dei nomi System.IO è "abysmally designed". Personalmente ho trovato che sia molto ben progettato, come la maggior parte dei BCL. – Noldorin
È solo un mucchio di metodi su classi statiche - quasi OO-y. È quasi impossibile e alle unit test class che eseguono l'elaborazione dei file senza scrivere wrapper per la loro funzionalità. A malapena un'interfaccia nel sito. –
FileInfo non è una classe statica. –