2010-06-17 30 views
11

Estoy buscando una clase C# que represente una ruta del sistema de archivos. Me gustaría usarlo (en lugar de cadenas) como el tipo de datos de las variables y los argumentos del método (razones principales: seguridad del tipo, pruebas de incompatibilidad, comparaciones lógicas).Clase C# (no estática) para representar rutas

  • System.IO.Path proporciona la mayor parte de la funcionalidad que quiero, pero es estática.
  • System.IO.FileInfo, según tengo entendido, realiza operaciones de IO para hacer su trabajo. Solo quiero un contenedor para la cadena de ruta.

Gracias!

+0

System.IO.Path es de clase estático y no abstracto. – Chinjoo

+0

Alguien escribió recientemente un marco como este, si puedo descubrir cómo se llama, lo pondré en una respuesta, hasta que empiece a buscar en Google. :) –

+0

Encontrado ese marco - FluentPath. He agregado una respuesta para ese efecto. –

Respuesta

4

Puede ser la biblioteca NDepend.Helpers.FileDirectoryPath es lo que está buscando.

Proporciona:

  • fuertemente tipado ruta del archivo/directorio.
  • Conversión de ruta relativa/absoluta.
  • API Ruta normalización
  • validez Ruta cheque API
  • comparación Ruta API
  • API Ruta de navegación.
  • Ruta rebase API
  • Lista de operaciones de trazado (TryGetCommonRootDirectory, GetListOfUniqueDirsAndUniqueFileNames, lista de la igualdad ...)
+0

Voy a ver este, parece prometedor. ¡Gracias! –

+0

No terminé utilizándolo debido a limitaciones de tiempo (no pude costear la refactorización necesaria). Esta biblioteca era, sin embargo, exactamente lo que estaba buscando. –

1

Bueno, lo que eres preguntando por es System.Uri. Pero lo que quiere que haga (o más exactamente, lo que debe hacer) es usar System.Path y sus amigos. Es lo que hacen todos los demás, y es lo correcto y apropiado.

1

Primero de todos, System.IO.Path es static, no abstract.

Dependiendo de lo que exactamente quiera hacer, puede usar System.IO.DirectoryInfo, System.Uri, o crear una clase personalizada que use System.IO.Path internamente.

0

Cree un contenedor para System.IO.Path y agregue la funcionalidad faltante a su contenedor.

+0

Naturalmente, podría hacer eso, pero me gustaría evitar escribir código NIH. Es un problema resuelto. –

0

System.IO.Path no es una clase abstracta, es una clase estática; la diferencia es que puede usar los métodos estáticos Path para manipular cadenas que representan rutas de archivos.

También puede usar la clase System.Uri para algunas de las operaciones de ruta de archivo, pero esa clase realmente se dirige a URL, no a archivos.

Si quiere ser de lujo, o necesita que sus archivos métodos de manipulación de rutas que se adjunta a una instancia específica, se puede escribir un conjunto de métodos de extensión a la clase String que realizan operaciones de trazado de archivos utilizando los métodos Path internamente.

Cuestiones relacionadas