2012-08-24 8 views
7

mam coś takiego:Jak uzyskać konkretny obiekt metody statycznej za pomocą interfejsu lustrzanego API?

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

Via refleksji, jestem w stanie uzyskać ClassMirror tej klasy. Od tego momentu, jak dostanę się do konkretnej funkcji statycznej, mogę ją nazwać.

Zauważ, że starałem się używać:

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

które początkowo wydają się działać, ale nie obsługuje przekazywanie złożonych typów jako argumenty, to funkcja statycznego wymaga typu złożonego jako jeden z nich znajduje się argumenty .

Idealnie chciałbym uzyskać obiekt "Function", który reprezentuje metodę statyczną, więc mogę go wywołać bezpośrednio.

Odpowiedz

16

a. Obecny stan rzeczy jest tymczasowy. Plan jest taki, że lustrzany interfejs API opakuje argumenty za pomocą serwerów lustrzanych.

b. Interfejs API może w końcu obsługiwać metodę getProperty, która zapewni przyszłość obiektu funkcji. Jednak nie otrzymasz bezpośrednio obiektu Function, więc nie będzie to miało żadnego znaczenia w tym przypadku.

c. Podstawową ideą jest to, że API zasadniczo działa na serwerach lustrzanych. Aby uczynić go bardziej użytecznym, powinien zaakceptować nie-lustra jako dane wejściowe i zawinąć je do lusterek. Zawsze będzie zwracał zwierciadła, aw niektórych przypadkach zwraca na nie kontrakty terminowe. Jest tak, że interfejs API działa tak samo dla zdalnych i lokalnych przypadków.

d. Zasoby dla zrozumienia lusterka:

  1. http://www.bracha.org/mirrors.pdf (papier akademicki, twardy bieżących)
  2. http://www.hpi.uni-potsdam.de/hirschfeld/events/past/media/100105_Bracha_2010_LinguisticReflectionViaMirrors_HPI.mp4 (wideo, wstępnie Dart, omawia wcześniejsze systemy lustrzane)
  3. http://gbracha.blogspot.com/2010/03/through-looking-glass-darkly.html (stary, pre-lotka, blogu z kopalni na lustrach)
  4. http://www.wirfs-brock.com/allen/posts/228 (blog. Allen Allen Wirfs-Brock był pionierem w Smalltalk lustro z powrotem w latach 90.)
  5. http://www.wirfs-brock.com/allen/posts/245

Możesz również search my blog lub Allen Wirf-Brock's dla wpisów na temat.

+0

Działa doskonale. Dziękuję Ci! –