10.08.2017 Логгинг с именами функций и номерами строк
 
Как известно, __LINE__, __FILE__ вместе с макро в C# не попали.
StackFrame медленный и вообще не должен компилироваться в native (не пробовал, но рефлексии там вроде нет).
К версии 4.5 появились System.Runtime.CompilerServices, но "в лоб" это тоже не работает. Вариации на тему

    void LogMessage(string format, object[] args,
        [System.Runtime.CompilerServices.CallerMemberName] string memberName = "",
        [System.Runtime.CompilerServices.CallerFilePath] string sourceFilePath = "",
        [System.Runtime.CompilerServices.CallerLineNumber] int sourceLineNumber = 0)
    {
        string msg = string.Format(format, args);
        Console.WriteLine("{0} {1}:{2} '{3}'", sourceFilePath, memberName, sourceLineNumber, msg);
    }

компилируется, но естественно не так, как хотелось бы, аттрибуты на сопоставление параметров не влияют. Попробуйте сами

    LogMessage("Hello, world");
    LogMessage("Hello, {0}", "world");
    LogMessage("{0}, {1}", "Hello", "world");

А как (можно ли вообще) на C# написать функцию вроде LogMessage, но работающую и без черезмерного синтаксического оверхеда?

 
 
 
 
10.12  .NET Reactor
15.11  n
15.11  C# ClickOnce
 
01.08  Task Context
01.08  XLSX в Mono
27.07  прокси