コード例 #1
0
ファイル: Signature.cs プロジェクト: modulexcite/IL2JS
 public override object ReadValue(BlobReader reader, Func<string, CustomAttributePropertyType> resolveType)
 {
     switch (Type)
     {
     case PrimitiveType.Boolean:
         return reader.ReadByte() == 0 ? false : true;
     case PrimitiveType.Char:
         return (char)reader.ReadUInt16();
     case PrimitiveType.Int8:
         return reader.ReadSByte();
     case PrimitiveType.Int16:
         return reader.ReadInt16();
     case PrimitiveType.Int32:
         return reader.ReadInt32();
     case PrimitiveType.Int64:
         return reader.ReadInt64();
     case PrimitiveType.UInt8:
         return reader.ReadByte();
     case PrimitiveType.UInt16:
         return reader.ReadUInt16();
     case PrimitiveType.UInt32:
         return reader.ReadUInt32();
     case PrimitiveType.UInt64:
         return reader.ReadUInt64();
     case PrimitiveType.IntNative:
     case PrimitiveType.UIntNative:
         throw new PEException("cannot read native integers");
     case PrimitiveType.Single:
         return reader.ReadSingle();
     case PrimitiveType.Double:
         return reader.ReadDouble();
     case PrimitiveType.String:
         return reader.ReadUTF8SizedString();
     case PrimitiveType.Type:
         return new TypeCustomAttributePropertyValue { Name = reader.ReadUTF8SizedString() };
     case PrimitiveType.Object:
     case PrimitiveType.TypedRef:
     case PrimitiveType.Void:
         throw new PEException("invalid type tag in custom attribute");
     default:
         throw new ArgumentOutOfRangeException();
     }
 }