IKVM11  11
Java SE 11 Virtual Machine for .NET
Loading...
Searching...
No Matches
IKVM.Reflection.Reader.ParameterInfoImpl Class Referencesealed

Public Member Functions

override CustomModifiers __GetCustomModifiers ()
 
override bool __TryGetFieldMarshal (out FieldMarshal fieldMarshal)
 

Properties

override string Name [get]
 
override Type ParameterType [get]
 
override ParameterAttributes Attributes [get]
 
override int Position [get]
 
override object RawDefaultValue [get]
 
override MemberInfo Member [get]
 
override int MetadataToken [get]
 
override Module Module [get]
 

Detailed Description

Definition at line 32 of file ParameterInfoImpl.cs.

Member Function Documentation

◆ __GetCustomModifiers()

override CustomModifiers IKVM.Reflection.Reader.ParameterInfoImpl.__GetCustomModifiers ( )

Definition at line 118 of file ParameterInfoImpl.cs.

119 {
120 return position == -1 ? method.MethodSignature.GetReturnTypeCustomModifiers(method) : method.MethodSignature.GetParameterCustomModifiers(method, position);
121 }

◆ __TryGetFieldMarshal()

override bool IKVM.Reflection.Reader.ParameterInfoImpl.__TryGetFieldMarshal ( out FieldMarshal fieldMarshal)

Definition at line 123 of file ParameterInfoImpl.cs.

124 {
125 return FieldMarshal.ReadFieldMarshal(this.Module, this.MetadataToken, out fieldMarshal);
126 }
IKVM.Reflection.Module Module

Property Documentation

◆ Attributes

override ParameterAttributes IKVM.Reflection.Reader.ParameterInfoImpl.Attributes
get

Definition at line 62 of file ParameterInfoImpl.cs.

63 {
64 get { return index == -1 ? ParameterAttributes.None : (ParameterAttributes)this.Module.ParamTable.records[index].Flags; }
65 }

◆ Member

override MemberInfo IKVM.Reflection.Reader.ParameterInfoImpl.Member
get

Definition at line 128 of file ParameterInfoImpl.cs.

129 {
130 get
131 {
132 // return the right ConstructorInfo wrapper
133 return method.Module.ResolveMethod(method.MetadataToken);
134 }
135 }

◆ MetadataToken

override int IKVM.Reflection.Reader.ParameterInfoImpl.MetadataToken
get

Definition at line 137 of file ParameterInfoImpl.cs.

138 {
139 get
140 {
141 // for parameters that don't have a row in the Param table, we return 0x08000000 (because index is -1 in that case),
142 // just like .NET
143 return (ParamTable.Index << 24) + index + 1;
144 }
145 }

◆ Module

override Module IKVM.Reflection.Reader.ParameterInfoImpl.Module
get

Definition at line 147 of file ParameterInfoImpl.cs.

148 {
149 get { return method.Module; }
150 }

◆ Name

override string IKVM.Reflection.Reader.ParameterInfoImpl.Name
get

Definition at line 52 of file ParameterInfoImpl.cs.

53 {
54 get { return index == -1 ? null : ((ModuleReader)this.Module).GetString(this.Module.ParamTable.records[index].Name); }
55 }

◆ ParameterType

override Type IKVM.Reflection.Reader.ParameterInfoImpl.ParameterType
get

Definition at line 57 of file ParameterInfoImpl.cs.

58 {
59 get { return position == -1 ? method.MethodSignature.GetReturnType(method) : method.MethodSignature.GetParameterType(method, position); }
60 }

◆ Position

override int IKVM.Reflection.Reader.ParameterInfoImpl.Position
get

Definition at line 67 of file ParameterInfoImpl.cs.

68 {
69 get { return position; }
70 }

◆ RawDefaultValue

override object IKVM.Reflection.Reader.ParameterInfoImpl.RawDefaultValue
get

Definition at line 72 of file ParameterInfoImpl.cs.

73 {
74 get
75 {
76 if ((Attributes & ParameterAttributes.HasDefault) != 0)
77 return Module.ConstantTable.GetRawConstantValue(Module, MetadataToken);
78
79 var universe = Module.Universe;
80 if (ParameterType == universe.System_Decimal)
81 {
82 var attr = universe.System_Runtime_CompilerServices_DecimalConstantAttribute;
83 if (attr != null)
84 {
85 foreach (var cad in CustomAttributeData.__GetCustomAttributes(this, attr, false))
86 {
87 var args = cad.ConstructorArguments;
88 if (args.Count == 5)
89 {
90 if (args[0].ArgumentType == universe.System_Byte &&
91 args[1].ArgumentType == universe.System_Byte &&
92 args[2].ArgumentType == universe.System_Int32 &&
93 args[3].ArgumentType == universe.System_Int32 &&
94 args[4].ArgumentType == universe.System_Int32)
95 {
96 return new decimal((int)args[4].Value, (int)args[3].Value, (int)args[2].Value, (byte)args[1].Value != 0, (byte)args[0].Value);
97 }
98 else if (args[0].ArgumentType == universe.System_Byte &&
99 args[1].ArgumentType == universe.System_Byte &&
100 args[2].ArgumentType == universe.System_UInt32 &&
101 args[3].ArgumentType == universe.System_UInt32 &&
102 args[4].ArgumentType == universe.System_UInt32)
103 {
104 return new Decimal(unchecked((int)(uint)args[4].Value), unchecked((int)(uint)args[3].Value), unchecked((int)(uint)args[2].Value), (byte)args[1].Value != 0, (byte)args[0].Value);
105 }
106 }
107 }
108 }
109 }
110
111 if ((Attributes & ParameterAttributes.Optional) != 0)
112 return Missing.Value;
113
114 return null;
115 }
116 }
override ParameterAttributes Attributes

The documentation for this class was generated from the following file: