2011-12-28 11 views
6

s allí Biblioteca de clases portátil equivalente a MethodBase.GetCurrentMethod?Biblioteca de clases portátil equivalente a MethodBase.GetCurrentMethod

Soy nuevo en PCLs. Estoy investigando si puedo usar una PCL para guardar algún código de cliente que definitivamente se utilizará en Silverlight y se puede usar en cualquier otro lugar. Después de haber escaneado la fuente, puedo ver muchas llamadas a MethodBase.GetCurrentMethod que no parece existir en la PCL.

** ** EDITAR

He arrancado esta muestra fuera de la biblioteca en cuestión. IsNullOrEmpty() estaba usando String.IsNullOrWhiteSpace (String) que no parece estar disponible, por lo que ese bit es un dulce de azúcar.

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

Los dispositivos que requieren PCL no aparecerán hasta el verano de 2013. ¿Tal vez el tiempo suficiente para descubrir cómo renunciar a los métodos que no son compatibles? GetCurrentMethod() ciertamente no debería ser una omisión crítica. –

Respuesta

1

(I 'propio' proyecto biblioteca portátil de Microsoft)

No exponemos en PCL porque no es compatible con Windows 8 NET para aplicaciones de Metro. ¿Cuál es tu uso de este método?

+0

He actualizado la pregunta original para incluir una muestra. Hay muchos métodos de extensión similares en la biblioteca original. – ssg31415926

+1

Hola David ... Estaba buscando usar GetCurrentMethod puramente para agregar al registro de depuración, al igual que la macro C _ _FUNCTION_ _. ¿Hay alguna otra forma de lograr esto en PCL .NET? – GrahamW

+4

Es un fastidio que este método no se encuentre. Esto fue fundamental para registrar entradas en una biblioteca compartida. Conocer el método actual le permite asegurarse de que su código de registro esté registrando todos los parámetros de entrada. Muy importante cuando las firmas de métodos cambian. – Daniel

Cuestiones relacionadas