throw new NotSupportedException();
}
+ public override int __MethodRVA
+ {
+ get { return method.__MethodRVA; }
+ }
+
public override MethodInfo MakeGenericMethod(params Type[] typeArguments)
{
return new GenericMethodInstance(declaringType, method, typeArguments);
{
return this;
}
- else if (declaringType.IsGenericTypeInstance)
+ else if (declaringType.IsConstructedGenericType)
{
return new GenericMethodInstance(declaringType, method, null);
}
return method.GetGenericMethodArgumentCount();
}
- internal override IList<CustomAttributeData> GetCustomAttributesData(Type attributeType)
- {
- return method.GetCustomAttributesData(attributeType);
- }
-
internal override MethodInfo GetMethodOnTypeDefinition()
{
return method.GetMethodOnTypeDefinition();
}
else
{
- Writer.ByteBuffer spec = new Writer.ByteBuffer(10);
- Signature.WriteMethodSpec(module, spec, methodArgs);
- Metadata.MethodSpecTable.Record rec = new Metadata.MethodSpecTable.Record();
- Emit.MethodBuilder mb = method as Emit.MethodBuilder;
- if (mb != null && mb.ModuleBuilder == module && !declaringType.IsGenericType)
- {
- rec.Method = mb.MetadataToken;
- }
- else
- {
- rec.Method = module.ImportMember(GetGenericMethodDefinition());
- }
- rec.Instantiation = module.Blobs.Add(spec);
- return 0x2B000000 | module.MethodSpec.FindOrAddRecord(rec);
+ return module.ImportMethodSpec(declaringType, method, methodArgs);
}
}
{
get { return method.HasThis; }
}
+
+ public override MethodInfo[] __GetMethodImpls()
+ {
+ MethodInfo[] methods = method.__GetMethodImpls();
+ for (int i = 0; i < methods.Length; i++)
+ {
+ methods[i] = (MethodInfo)methods[i].BindTypeParameters(declaringType);
+ }
+ return methods;
+ }
+
+ internal override int GetCurrentToken()
+ {
+ return method.GetCurrentToken();
+ }
+
+ internal override bool IsBaked
+ {
+ get { return method.IsBaked; }
+ }
}
sealed class GenericFieldInstance : FieldInfo
get { return field.__FieldRVA; }
}
- public override FieldInfo __GetFieldOnTypeDefinition()
+ public override bool __TryGetFieldOffset(out int offset)
{
- return field;
+ return field.__TryGetFieldOffset(out offset);
}
- internal override IList<CustomAttributeData> GetCustomAttributesData(Type attributeType)
+ public override FieldInfo __GetFieldOnTypeDefinition()
{
- return field.GetCustomAttributesData(attributeType);
+ return field;
}
internal override FieldSignature FieldSignature
{
return new GenericFieldInstance(declaringType.BindTypeParameters(type), field);
}
+
+ internal override int GetCurrentToken()
+ {
+ return field.GetCurrentToken();
+ }
+
+ internal override bool IsBaked
+ {
+ get { return field.IsBaked; }
+ }
}
sealed class GenericParameterInfoImpl : ParameterInfo
return parameterInfo.__GetCustomModifiers().Bind(method);
}
+ public override bool __TryGetFieldMarshal(out FieldMarshal fieldMarshal)
+ {
+ return parameterInfo.__TryGetFieldMarshal(out fieldMarshal);
+ }
+
public override MemberInfo Member
{
get { return method; }
get { return property.IsPublic; }
}
+ internal override bool IsNonPrivate
+ {
+ get { return property.IsNonPrivate; }
+ }
+
internal override bool IsStatic
{
get { return property.IsStatic; }
get { return property.MetadataToken; }
}
- internal override IList<CustomAttributeData> GetCustomAttributesData(Type attributeType)
+ internal override PropertyInfo BindTypeParameters(Type type)
{
- return property.GetCustomAttributesData(attributeType);
+ return new GenericPropertyInfo(typeInstance.BindTypeParameters(type), property);
}
- internal override PropertyInfo BindTypeParameters(Type type)
+ internal override bool IsBaked
{
- return new GenericPropertyInfo(typeInstance.BindTypeParameters(type), property);
+ get { return property.IsBaked; }
+ }
+
+ internal override int GetCurrentToken()
+ {
+ return property.GetCurrentToken();
}
}
get { return eventInfo.MetadataToken; }
}
- internal override IList<CustomAttributeData> GetCustomAttributesData(Type attributeType)
- {
- return eventInfo.GetCustomAttributesData(attributeType);
- }
-
internal override EventInfo BindTypeParameters(Type type)
{
return new GenericEventInfo(typeInstance.BindTypeParameters(type), eventInfo);
get { return eventInfo.IsPublic; }
}
+ internal override bool IsNonPrivate
+ {
+ get { return eventInfo.IsNonPrivate; }
+ }
+
internal override bool IsStatic
{
get { return eventInfo.IsStatic; }
}
+
+ internal override bool IsBaked
+ {
+ get { return eventInfo.IsBaked; }
+ }
+
+ internal override int GetCurrentToken()
+ {
+ return eventInfo.GetCurrentToken();
+ }
}
}