okiami1983のブログ

クオリティーが低い記事はあとで書き直します。。

C#のCaller Information

CallerMemberName, CallerFilePath, CallerLineNumberについて知りたかったのですが、日本語の情報源があまりなく、MSDNには英語のページが用意されているけど↓、これだけじゃよくわからなかったのでVisual C#でコンソールアプリケーションを作ってデバッガで動かしてみました。

MSDN Caller Information (C#)

 

f:id:okiami1983:20170204130758p:plain

 

 

  • したこと
  1. Visual C#で新規のコンソールアプリケーションを作成。
  2. DoProcessing()とTraceMessage()を作成。
    DoProcessing()はTraceMessage()を呼び出します。
    TraceMessage()コールの引数は直接渡す引数に加えて、Caller Informationの属性を(Windowsのシステムから?)受け取るようにしました。
  3. DoProcessing()をMain()から呼び出すコードを作成。
  4. DoProcessing()のコール元にブレークポイントを設定して実行します。ステップ実行でTraceMessage()を呼び出します。

 

  • 結果

Caller Informationの値は動的に設定されていることが自動変数の情報から確認できます。

 

 

Caller Informationは「属性」というヤツらしいのですが、使い方を説明しているサイトがあまり見つからず困っていました。こちらの記事が参考になりました。

ufcpp.net