私がやりたいことの例は次のとおりです。
MessageBox.Show("Error line number " + CurrentLineNumber);
上記のコードではCurrentLineNumber
、 はこのコードのソース コード内の行番号になります。
どうやってやるの?
ベストアンサー1
.NET 4.5 / C# 5 では、新しい呼び出し元属性を使用するユーティリティ メソッドを記述することで、コンパイラにこの作業を実行させることができます。
using System.Runtime.CompilerServices;
static void SomeMethodSomewhere()
{
ShowMessage("Boo");
}
...
static void ShowMessage(string message,
[CallerLineNumber] int lineNumber = 0,
[CallerMemberName] string caller = null)
{
MessageBox.Show(message + " at line " + lineNumber + " (" + caller + ")");
}
たとえば次のように表示されます。
39 行目のブー (SomeMethodSomewhere)
[CallerFilePath]
元のコード ファイルのパスを示すものもあります。