2012-08-24 34 views
7

Tôi có một cái gì đó như thế này:Làm thế nào để có được đối tượng cụ thể của một phương pháp tĩnh thông qua API gương?

class MyClass 
{ 
    static void DoSomething(arg1, arg2){...} 
} 

Qua phản ánh, tôi có thể để có được những ClassMirror của lớp này. Từ thời điểm này, làm thế nào tôi sẽ nhận được các chức năng tĩnh bê tông để tôi có thể gọi nó.

Lưu ý rằng tôi đã cố gắng để sử dụng:

ObjectMirror.invoke('DoSomething', [arg1, arg2]); 

đó sẽ ban đầu xuất hiện để làm việc, nhưng nó không hỗ trợ qua các loại phức tạp như các đối số, chức năng tĩnh Điều này đòi hỏi một loại phức tạp như một trong đó là lập luận .

Lý tưởng nhất, tôi muốn lấy đối tượng 'Hàm' đại diện cho phương thức tĩnh để tôi có thể gọi trực tiếp.

Trả lời

16

a. Tình trạng hiện tại là tạm thời. Kế hoạch là API gương sẽ bao bọc các đối số với các gương cho bạn.

b. API cuối cùng có thể hỗ trợ một phương thức getProperty sẽ cung cấp cho bạn một tương lai trên đối tượng hàm. Tuy nhiên, bạn sẽ không nhận được một đối tượng hàm trực tiếp, do đó, điều này sẽ không thực sự tạo ra bất kỳ sự khác biệt nào trong trường hợp này.

c. Ý tưởng cốt lõi là API cơ bản hoạt động trên gương. Để làm cho nó dễ sử dụng hơn, nó sẽ chấp nhận không gương như đầu vào và bọc chúng trong gương cho bạn. Nó sẽ luôn luôn trả lại gương, và trong một số trường hợp trở lại tương lai về những cái này. Điều này là để API hoạt động tương tự cho các trường hợp từ xa và cục bộ.

d. Nguồn lực cho sự hiểu biết gương:

  1. http://www.bracha.org/mirrors.pdf (báo cáo khoa học, khó khăn đang diễn ra)
  2. http://www.hpi.uni-potsdam.de/hirschfeld/events/past/media/100105_Bracha_2010_LinguisticReflectionViaMirrors_HPI.mp4 (video, pre-Dart, thảo luận về hệ thống gương trước)
  3. http://gbracha.blogspot.com/2010/03/through-looking-glass-darkly.html (một tuổi, trước khi phi tiêu, bài viết trên blog của tôi trên gương)
  4. http://www.wirfs-brock.com/allen/posts/228 (blog. Allen Allen Wirfs-Brock là một người tiên phong gương trở lại trong Smalltalk trong những năm 90)
  5. http://www.wirfs-brock.com/allen/posts/245

Bạn cũng có thể search my blog hoặc Allen Wirf-Brock's cho các bài đăng về chủ đề.

+0

Làm việc hoàn hảo. Cảm ơn bạn! –

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