public abstract ParameterAttributes Attributes { get; }
public abstract int Position { get; }
public abstract object RawDefaultValue { get; }
- public abstract Type[] GetOptionalCustomModifiers();
- public abstract Type[] GetRequiredCustomModifiers();
+ public abstract CustomModifiers __GetCustomModifiers();
+ public abstract bool __TryGetFieldMarshal(out FieldMarshal fieldMarshal);
public abstract MemberInfo Member { get; }
public abstract int MetadataToken { get; }
internal abstract Module Module { get; }
+ public Type[] GetOptionalCustomModifiers()
+ {
+ return __GetCustomModifiers().GetOptional();
+ }
+
+ public Type[] GetRequiredCustomModifiers()
+ {
+ return __GetCustomModifiers().GetRequired();
+ }
+
public bool IsIn
{
get { return (Attributes & ParameterAttributes.In) != 0; }
{
return CustomAttributeData.__GetCustomAttributes(this, attributeType, inherit);
}
+ }
+
+ sealed class ParameterInfoWrapper : ParameterInfo
+ {
+ private readonly MemberInfo member;
+ private readonly ParameterInfo forward;
+
+ internal ParameterInfoWrapper(MemberInfo member, ParameterInfo forward)
+ {
+ this.member = member;
+ this.forward = forward;
+ }
+
+ public override string Name
+ {
+ get { return forward.Name; }
+ }
+
+ public override Type ParameterType
+ {
+ get { return forward.ParameterType; }
+ }
+
+ public override ParameterAttributes Attributes
+ {
+ get { return forward.Attributes; }
+ }
+
+ public override int Position
+ {
+ get { return forward.Position; }
+ }
+
+ public override object RawDefaultValue
+ {
+ get { return forward.RawDefaultValue; }
+ }
+
+ public override CustomModifiers __GetCustomModifiers()
+ {
+ return forward.__GetCustomModifiers();
+ }
+
+ public override bool __TryGetFieldMarshal(out FieldMarshal fieldMarshal)
+ {
+ return forward.__TryGetFieldMarshal(out fieldMarshal);
+ }
+
+ public override MemberInfo Member
+ {
+ get { return member; }
+ }
+
+ public override int MetadataToken
+ {
+ get { return forward.MetadataToken; }
+ }
- internal virtual IList<CustomAttributeData> GetCustomAttributesData(Type attributeType)
+ internal override Module Module
{
- return this.Module.GetCustomAttributes(this.MetadataToken, attributeType);
+ get { return member.Module; }
}
}
}