2011-12-28 15 views
6

sそこには、MethodBase.GetCurrentMethodに相当するポータブルクラスライブラリがありますか?MethodBase.GetCurrentMethodに相当するポータブルクラスライブラリ

私はPCLを初めて使いました。私は間違いなく、Silverlightの上で使用され、他の場所で使用することができるいくつかのクライアントコードを保持するために、PCLを使用できるかどうかを検討していjustingです。ソースをスキャンすると、PCLには存在しないようなMethodBase.GetCurrentMethodをたくさん呼び出すことができます。

** EDIT **

私は、問題のライブラリからこのサンプルをリッピングしてきました。 IsNullOrEmpty()そのビットはファッジですので、利用可能ではないようですString.IsNullOrWhiteSpace(String)を使用していました。

using System; 
using System.Linq; 
using System.Reflection; 
using System.Linq.Expressions; 

namespace LinqToLdap.PCL 
{ 
    public static class QueryableExtensions 
    { 
     internal static bool IsNullOrEmpty(this String str) 
     { 
      return string.IsNullOrEmpty(str); 
     } 

     public static IQueryable<TSource> FilterWith<TSource>(this IQueryable<TSource> source, string filter) 
     { 
      if (source == null) throw new ArgumentNullException("source"); 

      if (filter.IsNullOrEmpty()) throw new Exception("Filters cannot be null, empty, or white-space."); 

      if (!filter.StartsWith("(")) 
      { 
       filter = "(" + filter + ")"; 
      } 

      return source.Provider.CreateQuery<TSource>(
       Expression.Call(
        null, 
        ((MethodInfo)MethodBase.GetCurrentMethod()) 
         .MakeGenericMethod(new[] { typeof(TSource) }), 
        new[] { source.Expression, Expression.Constant(filter) } 
        ) 
       ); 
     } 
    } 
} 
+0

PCLを必要とするデバイスは、2013年夏までは表示されません。サポートされていない方法をあきらめる方法を理解するのに十分な時間ですか? GetCurrentMethod()は決して重要な省略であってはなりません。 –

答えて

1

(私はMicrosoftのポータブルライブラリプロジェクトを自身 ')

それはメトロのアプリのWindows 8 .NETでサポートされていないので、我々はPCLでそれを公開しないでください。この方法のあなたの使い方は何ですか?

+0

元の質問にサンプルを含めるように更新しました。元のライブラリには、多くの同様の拡張メソッドがあります。 – ssg31415926

+1

こんにちはダビデは...私はずっとC _ _ _FUNCTION_マクロのように、デバッグログに追加するための純粋にGetCurrentMethodを使用して見ていました。 PCL .NETでこれを実現する他の方法はありますか? – GrahamW

+4

この方法が欠落しているのは残念です。これは、共有ライブラリへの入力を記録する上で重要でした。現行の方法を知ることで、ロギング・コードがすべての入力パラメーターをロギングしていることを確認できます。メソッドのシグネチャが変更されたときは非常に重要です。 – Daniel