IKVM11  11
Java SE 11 Virtual Machine for .NET
Loading...
Searching...
No Matches
ClassAccessor.cs
Go to the documentation of this file.
1using System;
2
4{
5
6#if FIRST_PASS == false && EXPORTER == false && IMPORTER == false
7
11 internal sealed class ClassAccessor : Accessor<object>
12 {
13
14 Type ikvmInternalCallerID;
15 Type javaLangClass;
16 Type javaLangReflectMethod;
17
18 MethodAccessor<Func<Type, object>> init;
19 MethodAccessor<Func<string, object, object>> forName;
20 MethodAccessor<Func<object, string, object[], object, object>> getMethod;
21
26 public ClassAccessor(AccessorTypeResolver resolver) :
27 base(resolver, "java.lang.Class")
28 {
29
30 }
31
32 Type IkvmInternalCallerID => Resolve(ref ikvmInternalCallerID, "ikvm.internal.CallerID");
33
34 Type JavaLangClass => Resolve(ref javaLangClass, "java.lang.Class");
35
36 Type JavaLangReflectMethod => Resolve(ref javaLangReflectMethod, "java.lang.reflect.Method");
37
43 public object Init(Type type) => GetConstructor(ref init, typeof(Type)).Invoker(type);
44
51 public object InvokeForName(string name, object callerID) => GetMethod(ref forName, nameof(forName), JavaLangClass, typeof(string), IkvmInternalCallerID).Invoker(name, callerID);
52
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);
62
63 }
64
65#endif
66
67}
IKVM.Reflection.Type Type