예제 #1
0
 private MarshalAsDescriptor GetMarshalAsDescriptor(Parameter parameter)
 {
     if ((parameter.Attributes & ParameterAttributes.HasFieldMarshal) == ParameterAttributes.HasFieldMarshal)
     {
         MetadataReader      metadataReader  = MetadataReader;
         BlobReader          marshalAsReader = metadataReader.GetBlobReader(parameter.GetMarshallingDescriptor());
         EcmaSignatureParser parser          = new EcmaSignatureParser(Module, marshalAsReader);
         return(parser.ParseMarshalAsDescriptor());
     }
     return(null);
 }
예제 #2
0
 private MarshalAsDescriptor GetMarshalAsDescriptor(FieldDefinition fieldDefinition)
 {
     if ((fieldDefinition.Attributes & FieldAttributes.HasFieldMarshal) == FieldAttributes.HasFieldMarshal)
     {
         MetadataReader      metadataReader  = MetadataReader;
         BlobReader          marshalAsReader = metadataReader.GetBlobReader(fieldDefinition.GetMarshallingDescriptor());
         EcmaSignatureParser parser          = new EcmaSignatureParser(EcmaModule, marshalAsReader);
         MarshalAsDescriptor marshalAs       = parser.ParseMarshalAsDescriptor();
         Debug.Assert(marshalAs != null);
         return(marshalAs);
     }
     return(null);
 }
예제 #3
0
파일: EcmaMethod.cs 프로젝트: z77ma/runtime
 private MarshalAsDescriptor GetMarshalAsDescriptor(Parameter parameter)
 {
     if ((parameter.Attributes & ParameterAttributes.HasFieldMarshal) == ParameterAttributes.HasFieldMarshal)
     {
         MetadataReader      metadataReader  = MetadataReader;
         BlobReader          marshalAsReader = metadataReader.GetBlobReader(parameter.GetMarshallingDescriptor());
         EcmaSignatureParser parser          = new EcmaSignatureParser(Module, marshalAsReader, NotFoundBehavior.Throw);
         MarshalAsDescriptor marshalAs       = parser.ParseMarshalAsDescriptor();
         Debug.Assert(marshalAs != null);
         return(marshalAs);
     }
     return(null);
 }
예제 #4
0
        public override MarshalAsDescriptor GetMarshalAsDescriptor()
        {
            MetadataReader  reader     = MetadataReader;
            FieldDefinition definition = reader.GetFieldDefinition(_handle);

            if ((definition.Attributes & FieldAttributes.HasFieldMarshal) != 0)
            {
                BlobReader          marshalAsReader = reader.GetBlobReader(definition.GetMarshallingDescriptor());
                EcmaSignatureParser parser          = new EcmaSignatureParser(_type.EcmaModule, marshalAsReader, NotFoundBehavior.Throw);
                return(parser.ParseMarshalAsDescriptor());
            }

            return(null);
        }