¿Cómo puedo obtener la ruta del archivo de origen de una declaración de clase?
Similar a esta pregunta: https://stackoverflow.com/questions/18697865/find-a-class-its-cs-file-in-project – no encontré un ejemplo actualizado de este hilo.
Ejemplo:
– Tengo una clase llamada ExampleClass1
ubicada en: Project/Example/ExampleClass.cs
– Este archivo fuente puede ser generado por código o no.
– El programa principal guarda todos los archivos fuente generados y necesita saber si alguna de las clases ha sido movida manualmente a otro directorio. En caso de ser así, la lista debe ser actualizada con la nueva ruta.
– Las rutas son necesarias para manejar los archivos fuente (eliminar, mover, etc.) desde el programa principal.
En el script principal, me gustaría saber la ruta del archivo fuente donde se declara la clase (tipo).
Pseudocódigo:
C#
string filePath = "Project/Example/ExampleClass1.cs";
string className = "ExampleClass1";
if (!File.Exists(currentFilePath)) //Si no existe, verificar si existe en una ruta diferente
{
string className = "ExampleClass1"; //podría ser un Type en lugar de un string
filePath = GetPathOfType(className); //devuelve "Project/Example/ExampleClass.cs"
}
davy.ai
Para obtener la ruta de un archivo fuente donde se declara una clase, se puede utilizar la reflexión en C#. Aquí están los pasos para lograrlo:
“`c#
Assembly asm = Assembly.LoadFrom(“ruta/hasta/biblioteca.dll”);
Nota: Reemplace “EjemploNamespace” con el namespace real de la clase.
“`c#
string filePath = type.Assembly.Location.Replace(“.dll”, “.cs”);
Nota: El método
GetPathOfType
se puede implementar utilizando varios enfoques, como escanear todos los directorios en el proyecto, buscar el archivo que contiene el nombre de la clase o utilizar el métodoGetFiles
de la claseDirectory
.Con estos pasos, se puede obtener exitosamente la ruta del archivo fuente donde se declara una clase, incluso si se ha movido a otro directorio manualmente. Esta ruta luego se puede utilizar para manejar el archivo fuente desde el programa principal.