2011-12-28 34 views
6

s Thư viện lớp học di động có tương đương với MethodBase.GetCurrentMethod không?Thư viện lớp di động tương đương với MethodBase.GetCurrentMethod

Tôi mới tham gia PCL. Tôi chỉ đang xem xét liệu tôi có thể sử dụng PCL để giữ một số mã máy khách chắc chắn sẽ được sử dụng trên Silverlight và có thể được sử dụng ở nơi khác không. Sau khi quét nguồn, tôi có thể thấy nhiều cuộc gọi đến MethodBase.GetCurrentMethod mà dường như không tồn tại trong PCL.

** EDIT **

Tôi đã xé mẫu này ra khỏi thư viện trong câu hỏi. IsNullOrEmpty() đã sử dụng String.IsNullOrWhiteSpace (String) mà dường như không có sẵn, do đó bit là một fudge.

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

Thiết bị yêu cầu PCL sẽ không xuất hiện cho đến mùa hè năm 2013. Có thể đủ thời gian để tìm ra cách từ bỏ các phương pháp không được hỗ trợ? GetCurrentMethod() chắc chắn không nên là một thiếu sót quan trọng. –

Trả lời

1

(Tôi sở hữu 'Thư viện di động dự án tại Microsoft)

Chúng tôi không tiếp xúc với nó trong PCL bởi vì nó không được hỗ trợ trong Windows 8 .NET cho các ứng dụng Metro. Cách bạn sử dụng phương pháp này là gì?

+0

Tôi đã cập nhật câu hỏi ban đầu để bao gồm một mẫu. Có nhiều phương pháp mở rộng tương tự trong thư viện gốc. – ssg31415926

+1

Xin chào David ... Tôi đã xem xét việc sử dụng GetCurrentMethod hoàn toàn để thêm vào gỡ lỗi đăng nhập, giống như C _ _FUNCTION_ _ macro. Có cách nào khác để đạt được điều này trong PCL .NET không? – GrahamW

+4

Thật tiếc khi phương thức này bị thiếu. Điều này là rất quan trọng cho việc đăng nhập vào một thư viện được chia sẻ. Việc biết phương thức hiện tại cho phép bạn đảm bảo rằng mã đăng nhập của bạn đang ghi nhật ký tất cả các tham số đầu vào. Rất quan trọng khi chữ ký phương thức thay đổi. – Daniel

Các vấn đề liên quan