Hallo,
habe gerade eine Bibliothek realisiert um Siemens TIA Portal Files zu lesen. Meine Bibliothek, kann die Dateien direkt oder aus Archiven öffnen.
Nun habe Ich das problem, der User kann ein Archiv, das ProjektFile oder das Datenbankfile öffnen. das Datenbankfile kann natürlich auch noch gesplittet in mehrere Files sein. Und aus dem Datenbankfile kann noch auf andere Files im Dateisystem (bspw. Bilder) verwiesen werden.
Nun brauche Ich irgendeine Abstraktion des Dateisystems, da wenn der User ja ein Archiv öffnet, ich direkt im Archiv suchen muss, wenn er Ein projektfile öffnet Relativ zu diesem, Wenn er einen Stream nutzt, gehen die Relativen funktionen nicht, usw....
Gibt es dazu vlt. tolle Ideen?
cSharp Projekte : https://github.com/jogibear9988
Was ist denn Deine konkrete Frage?
So kann man völlig trocken mit "in C# macht man Abstraktionen meistens mit Interfaces" antworten.
- performance is a feature -
Microsoft MVP - @Website - @AzureStuttgart - github.com/BenjaminAbt - Sustainable Code
Ggf. hilft dir Microsoft.Extensions.FileProviders weiter?
Das ist eigentlich im Rahmen von ASP.NET Core entstanden, kann man aber auch unabhängig davon nutzen, such einfach bei NuGet nach "Microsoft.Extensions.FileProviders".
Das ist eine rein lesende Abstraktion ums Dateisystem, kann also nur lesende Streams öffnen, aber keine Ordner oder Dateien erstellen, bearbeiten, umbenennen, etc.
Wenn es nur ums Öffnen und Lesen von Dateien geht, sollte das aber völlig ausreichen.
Wenn Du auch Dateien bearbeiten musst, dann kannst Du ggf. darauf aufbauend die Abstraktion ausbauen.
Wenn Du aber eher spezifische Anforderungen hast und eine komplette FileSystem-Abstraktion eigentlich zu viel ist, wäre eine spezifische Abstraktion mit genau den Funktionen, die Du so brauchst, vermutlich die klügere Wahl.
Oder Du schaust nach vorhandenen Abstraktionen, z.B. System.IO.Abstractions. Das ist nicht von Microsoft (ich selber kenne es auch nicht), solche Abhängigkeiten sollten also gut überlegt sein.
NuGet Packages im Code auslesen
lock Alternative für async/await
Beim CleanCode zählen nicht die Regeln, sondern dass wir uns mit diesen Regeln befassen, selbst wenn wir sie nicht befolgen - hoffentlich nach reiflichen Überlegungen.
Ja, weiß die Frage ist sehr unspezifisch.... Bin einfach nur am Ideen sammeln... Das ganze funktioniert ja, aber muss nun eben in eine saubere API...
Vlt mache Ich ja unterschiedliche Provider, ob, ZipFile oder Dateisystem oder Stream....
Wobei der Stream ja wieder ein zipfile sein kann, aber dann könnt eIch ja intern wieder das Zipfile Interface nutzen...
Ich glaube das ist eine ganz gute Idee....
cSharp Projekte : https://github.com/jogibear9988