Makopy'5 La6

スマホアプリ開発とかその周辺のこととか関係ないこと。または恋は言ってみりゃボディー・ブロー

(Xamarin.Forms)ログにメソッド名を出力する

ログにメソッド名を出力したい!

そう思うことはちょいちょいあります。
iOSネイティブだと、

  • Objective-Cなら__PRETTY_FUNCTION__
  • Swiftなら#function

で、手軽にできるんですが。

Xamarin.Formsではどうやるんでしょうか?
ということで、調べて見ました。

MethodBase.GetCurrentMethod

パッと調べてみた感じ、
MethodBase.GetCurrentMethod
を使えばよさそう!

GetCurrentMethod - Xamarin

と思いましたが、
Xamarin.Forms(PCL)ではちょっと無理っぽい…。

MethodBase does not contain GetCurrentMethod in Portable Class Library (VS 2015)

Caller Info属性

もうちょっと調べてみたら、
Caller Info属性
というのがあるらしい(C# 5.0〜)

C# 5.0 の新機能 - C# によるプログラミング入門 | ++C++; // 未確認飛行 C

こいつならXamarin.Formsでもいけそう! ということで、 Caller Infoを使ったサンプル実装してみました!

とは言っても、
ほとんど上記のページの通りの実装に、 自分が欲しい形を追加しただけなんですが…。

Traceクラスを実装してみた

ログ出力周りについては、
実戦の開発で使うならいろいろ考慮せねばなりませんが…。
ここではベーシックにやり方を押さえるサンプルとして。

おまけ

iOS(Objective-C)の場合

iOS(Swift)の場合

Android(Java)の場合