是否存在等效于 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) }
)
);
}
}
}