6#if FIRST_PASS == false && EXPORTER == false && IMPORTER == false
11 internal sealed class ClassAccessor : Accessor<object>
14 Type ikvmInternalCallerID;
16 Type javaLangReflectMethod;
18 MethodAccessor<Func<Type, object>> init;
19 MethodAccessor<Func<string, object, object>> forName;
20 MethodAccessor<Func<object, string, object[], object, object>> getMethod;
26 public ClassAccessor(AccessorTypeResolver resolver) :
27 base(resolver,
"java.lang.Class")
32 Type IkvmInternalCallerID => Resolve(
ref ikvmInternalCallerID,
"ikvm.internal.CallerID");
34 Type JavaLangClass => Resolve(
ref javaLangClass,
"java.lang.Class");
36 Type JavaLangReflectMethod => Resolve(
ref javaLangReflectMethod,
"java.lang.reflect.Method");
43 public object Init(
Type type) => GetConstructor(
ref init, typeof(
Type)).Invoker(type);
51 public object InvokeForName(
string name,
object callerID) => GetMethod(
ref forName, nameof(forName), JavaLangClass, typeof(
string), IkvmInternalCallerID).Invoker(name, callerID);
61 public object InvokeGetMethod(
object self,
string name,
object[] parameterTypes,
object callerID) => GetMethod(
ref getMethod, nameof(getMethod), JavaLangReflectMethod, typeof(
string), JavaLangClass.MakeArrayType(), IkvmInternalCallerID).Invoker(
self, name, parameterTypes, callerID);