Переносимая библиотека классов, эквивалентная MethodBase.GetCurrentMethod

Существует ли переносимая библиотека классов, эквивалентная MethodBase.GetCurrentMethod?

Я новичок в PCL. Я просто изучаю, могу ли я использовать PCL для хранения некоторого клиентского кода, который определенно будет использоваться в Silverlight и может использоваться где-либо еще. Просканировав исходный код, я вижу множество вызовов MethodBase.GetCurrentMethod, которых, похоже, нет в PCL.

** ИЗМЕНИТЬ **

Я вырвал этот образец из рассматриваемой библиотеки. 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) }
                    )
                );
        }
    }
}

person ssg31415926    schedule 28.12.2011    source источник
comment
Устройства, требующие PCL, появятся не раньше лета 2013 года. Может быть, достаточно времени, чтобы понять, как отказаться от неподдерживаемых методов? GetCurrentMethod() определенно не должно быть критическим упущением.   -  person Hans Passant    schedule 29.12.2011


Ответы (1)


(Я «владею» проектом Portable Library в Microsoft)

Мы не предоставляем его в PCL, потому что он не поддерживается в Windows 8 .NET для приложений Metro. Как вы используете этот метод?

person David Kean    schedule 19.02.2012
comment
Я обновил исходный вопрос, включив в него образец. В исходной библиотеке есть много подобных методов расширения. - person ssg31415926; 21.02.2012
comment
Привет, Дэвид... Я рассматривал использование GetCurrentMethod исключительно для добавления в журнал отладки, очень похоже на макрос C _ FUNCTION _. Есть ли другой способ добиться этого в PCL .NET? - person GrahamW; 08.11.2012
comment
Обидно, что этот метод отсутствует. Это было критически важно для регистрации входных данных в разделяемую библиотеку. Знание текущего метода позволяет вам убедиться, что ваш код ведения журнала регистрирует все входные параметры. Очень важно, когда изменяются сигнатуры методов. - person Daniel; 23.06.2014
comment
Теперь, когда использование Windows Mobile в целом упало до 0,4%, а доля Windows 8 в этой и без того крошечной пользовательской базе постоянно уменьшается, возможно, мы могли бы подумать о том, чтобы добавить это в Portable Libraries прямо сейчас? - person Eeeeed; 18.05.2017