IKVM11  11
Java SE 11 Virtual Machine for .NET
Loading...
Searching...
No Matches
MethodInfoWithReflectedType.cs
Go to the documentation of this file.
1/*
2 Copyright (C) 2009-2012 Jeroen Frijters
3
4 This software is provided 'as-is', without any express or implied
5 warranty. In no event will the authors be held liable for any damages
6 arising from the use of this software.
7
8 Permission is granted to anyone to use this software for any purpose,
9 including commercial applications, and to alter it and redistribute it
10 freely, subject to the following restrictions:
11
12 1. The origin of this software must not be misrepresented; you must not
13 claim that you wrote the original software. If you use this software
14 in a product, an acknowledgment in the product documentation would be
15 appreciated but is not required.
16 2. Altered source versions must be plainly marked as such, and must not be
17 misrepresented as being the original software.
18 3. This notice may not be removed or altered from any source distribution.
19
20 Jeroen Frijters
21 jeroen@frijters.net
22
23*/
24using System.Diagnostics;
25
26namespace IKVM.Reflection
27{
28
29 sealed class MethodInfoWithReflectedType : MethodInfo
30 {
31
32 readonly Type reflectedType;
33 readonly MethodInfo method;
34
40 internal MethodInfoWithReflectedType(Type reflectedType, MethodInfo method)
41 {
42 Debug.Assert(reflectedType != method.DeclaringType);
43 this.reflectedType = reflectedType;
44 this.method = method;
45 }
46
47 public override bool Equals(object obj)
48 {
49 var other = obj as MethodInfoWithReflectedType;
50 return other != null
51 && other.reflectedType == reflectedType
52 && other.method == method;
53 }
54
55 public override int GetHashCode()
56 {
57 return reflectedType.GetHashCode() ^ method.GetHashCode();
58 }
59
60 internal override MethodSignature MethodSignature
61 {
62 get { return method.MethodSignature; }
63 }
64
65 internal override int ParameterCount
66 {
67 get { return method.ParameterCount; }
68 }
69
70 public override ParameterInfo[] GetParameters()
71 {
72 var parameters = method.GetParameters();
73 for (int i = 0; i < parameters.Length; i++)
74 parameters[i] = new ParameterInfoWrapper(this, parameters[i]);
75
76 return parameters;
77 }
78
79 internal override Type[] GetParameterTypes()
80 {
81 return method.GetParameterTypes();
82 }
83
84 public override MethodAttributes Attributes
85 {
86 get { return method.Attributes; }
87 }
88
89 public override MethodImplAttributes GetMethodImplementationFlags()
90 {
91 return method.GetMethodImplementationFlags();
92 }
93
94 public override MethodBody GetMethodBody()
95 {
96 return method.GetMethodBody();
97 }
98
99 public override CallingConventions CallingConvention
100 {
101 get { return method.CallingConvention; }
102 }
103
104 public override int __MethodRVA
105 {
106 get { return method.__MethodRVA; }
107 }
108
109 public override Type ReturnType
110 {
111 get { return method.ReturnType; }
112 }
113
114 public override ParameterInfo ReturnParameter
115 {
116 get { return new ParameterInfoWrapper(this, method.ReturnParameter); }
117 }
118
119 public override MethodInfo MakeGenericMethod(params Type[] typeArguments)
120 {
121 return SetReflectedType(method.MakeGenericMethod(typeArguments), reflectedType);
122 }
123
124 public override MethodInfo GetGenericMethodDefinition()
125 {
126 return method.GetGenericMethodDefinition();
127 }
128
129 public override string ToString()
130 {
131 return method.ToString();
132 }
133
134 public override MethodInfo[] __GetMethodImpls()
135 {
136 return method.__GetMethodImpls();
137 }
138
139 internal override Type GetGenericMethodArgument(int index)
140 {
141 return method.GetGenericMethodArgument(index);
142 }
143
144 internal override int GetGenericMethodArgumentCount()
145 {
146 return method.GetGenericMethodArgumentCount();
147 }
148
149 internal override MethodInfo GetMethodOnTypeDefinition()
150 {
151 return method.GetMethodOnTypeDefinition();
152 }
153
154 internal override bool HasThis
155 {
156 get { return method.HasThis; }
157 }
158
159 public override Module Module
160 {
161 get { return method.Module; }
162 }
163
164 public override Type DeclaringType
165 {
166 get { return method.DeclaringType; }
167 }
168
169 public override Type ReflectedType
170 {
171 get { return reflectedType; }
172 }
173
174 public override string Name
175 {
176 get { return method.Name; }
177 }
178
179 internal override int ImportTo(IKVM.Reflection.Emit.ModuleBuilder module)
180 {
181 return method.ImportTo(module);
182 }
183
184 public override MethodBase __GetMethodOnTypeDefinition()
185 {
186 return method.__GetMethodOnTypeDefinition();
187 }
188
189 public override bool __IsMissing
190 {
191 get { return method.__IsMissing; }
192 }
193
194 internal override MethodBase BindTypeParameters(Type type)
195 {
196 return method.BindTypeParameters(type);
197 }
198
199 public override bool ContainsGenericParameters
200 {
201 get { return method.ContainsGenericParameters; }
202 }
203
204 public override Type[] GetGenericArguments()
205 {
206 return method.GetGenericArguments();
207 }
208
209 public override bool IsGenericMethod
210 {
211 get { return method.IsGenericMethod; }
212 }
213
214 public override bool IsGenericMethodDefinition
215 {
216 get { return method.IsGenericMethodDefinition; }
217 }
218
219 public override int MetadataToken
220 {
221 get { return method.MetadataToken; }
222 }
223
224 internal override int GetCurrentToken()
225 {
226 return method.GetCurrentToken();
227 }
228
229 internal override bool IsBaked
230 {
231 get { return method.IsBaked; }
232 }
233
234 }
235
236}
IKVM.Reflection.MethodInfo MethodInfo
global::java.lang.invoke.LambdaForm.Name Name
System.Runtime.InteropServices.CallingConvention CallingConvention
Definition Signature.cs:35
override MethodInfo MakeGenericMethod(params Type[] typeArguments)
override MethodImplAttributes GetMethodImplementationFlags()
Represents a method signature from IL metadadata.