[C#] macro equivalents for __FILE__ , __LINE__

:) Din pacate C# nu suporta aceste macrouri.

Dar este posibil a se folosi Environment.StackTrace – care afiseaza stiva curenta a programului care se executa

class Environment {
  public static string StackTrace {get;}
}

Exemplu:

public static void Main()
{
   Console.WriteLine("StackTrace: '{0}'", Environment.StackTrace);
}

astfel, daca compilez si execut in visual studio, as avea un astfel de rezultat :

StackTrace: '   at System.Environment.GetStackTrace(Exception e, Boolean needFileInfo)
at System.Environment.get_StackTrace()
at stacktrace.Program.Main(String[] args) in C:\projects\stacktrace\stacktrace\Program.cs:line 11'

iar daca se sterge fisierul cu informatii de debug ( = fisierul cu formatul nume_executabil.pdb ) un posibil rezultat ar putea fi :

StackTrace: '   at System.Environment.GetStackTrace(Exception e, Boolean needFileInfo)
at System.Environment.get_StackTrace()
at stacktrace.Program.Main(String[] args)'

aceste linii returnate de StackTrace au un format bine definit, astfel ca se pot procesa automat usor.

mai multe detalii aici

[C#] Get files from directory

Aceste exemple arata cum se poate lua lista numelor de fisiere dintr-un directoriu ( inclusiv si subdirectoare ). De asemenea aceste liste se pot filtra si dupa extensie.

Pentru e lua nume fisierelor dintr-un directoriu specificat se foloseste metoda statica Directory.GetFiles .

using System.IO;

class Directory {
  public static string[] GetFiles(
    string path
  )
  public static string[] GetFiles(
    string path,
    string searchPattern
  )
  public static string[] GetFiles(
    string path,
    string searchPattern,
    SearchOption searchOption
  )
}

Sa presupunem ca avem fisierele si subfolderele in folderul C:\Temp

Metoda Directory.GetFiles returneaza un vector de stringuri cu numele fisierelor ( calea abosluta ):

string[] files = Directory.GetFiles( @"C:\Temp\" );

Un exemplu de rezultat ar fi :

C:\Temp\file1.txt
C:\Temp\file2.doc

Pentru a lua fisierele cu o anumita extensie se specifica pattern-ul. Cu pattern-ul se poate specifica, de exemplu fisierele cu extensia txt astfel : “*.txt” , fisierele care incep cu litera “a” : “a*”.

string[] files = Directory.GetFiles( @"C:\Temp\""*.txt" );

rezultat:

C:\Temp\file1.txt

Pentru a lua numele fisierelor recursiv din toate subfoldere se specifica al 3-lea parametru:

string[] files = Directory.GetFiles( @"C:\Temp\", "*.txt",
                     SearchOption.AllDirectories );

rezultat:

C:\Temp\file1.txt
C:\Temp\folder1\file5.txt

atat.