これはかなり...この問題は、WindowsストアアプリケーションをビルドするためのUnityプロジェクトでlog4Netを使用しているところです。 log4Netには、ロガーを宣言したクラスの型または名前(文字列として)が必要です。 Windowsのストア.NETはそれがGetCurrentMethod()などの通常の方法を持っていない変更されているので...私の周りにチェックし、これまでのところ、それは絶望的です。Windowsストアアプリ.NET GetCurrentMethod()。DeclaringTypeの代替
通常の方法は、この
public sealed class SomeClassController : ApiController
{
private static readonly ILog Log =
LoggerManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType);
...
How to get method name win 8 appある - ソリューション属性[CallerMememberName]が(宣言者ではなく)呼び出し元を返すため、ここで提供されている関数は機能しません。 func(Expression expression)メソッドは、メソッド内で使用される場合にのみ機能し、クラスフィールドとしては使用されないため動作しません(log4Netの場合とまったく同じです)。
もう1つの可能性はStackFrameを使用することでしたが、Windowsのストアではサポートされていませんでしたが、StackTraceを取得する唯一の方法は例外です。 2.すべての例外スローをUnityプロダクションで削除する必要があります。
GetType()のような単純なソリューションは、継承されたクラスがオーバーライドされると機能しません。 More here - http://rundevrun.blogspot.lt/2012/11/gettype-vs-methodbasegetcurrentmethodde.html
オプションが不足しています。クラスフィールドで使用する場合、DeclaringTypeを取得する方法はありませんか?
あなたは単に' typeof'を使うことはできません?はい、それはカットアンドペーストフレンドリーではありませんが、それははるかに簡単なアプローチです... –
いくつかの複雑な状況では、どのクラスタイプがそれを宣言し、それを指定する必要があります。 – MattJ
私は、これらの複雑な状況では、 'typeof'を使う方がはるかに分かりやすいと思います。とにかく、あなたはオプションが不足していると言った:私は 'typeof'は間違いなく選択肢であり、本当に簡単だと言いたい。 –