internal CustomAttrib.NamedArg ReadNamedArg(byte [] data, BinaryReader br, ref bool read, bool resolve) { CustomAttrib.NamedArg na = new CustomAttrib.NamedArg(); byte kind = br.ReadByte(); if (kind == 0x53) // field { na.Field = true; na.Property = false; } else if (kind == 0x54) // property { na.Field = false; na.Property = true; } else { throw new MetadataFormatException("Wrong kind of namedarg found: 0x" + kind.ToString("x2")); } TypeReference elemType = ReadTypeReference(data, br, out na.FieldOrPropType); na.FieldOrPropName = ReadUTF8String(data, br); na.FixedArg = ReadFixedArg(data, br, elemType, ref read, resolve); return(na); }
void Write(CustomAttrib.NamedArg na, MemoryBinaryWriter writer) { if (na.Field) { writer.Write((byte)0x53); } else if (na.Property) { writer.Write((byte)0x54); } else { throw new MetadataFormatException("Unknown kind of namedarg"); } if (na.FixedArg.SzArray) { writer.Write((byte)ElementType.SzArray); } writer.Write((byte)na.FieldOrPropType); if (na.FieldOrPropType == ElementType.Enum) { Write(na.FixedArg.Elems [0].ElemType.FullName); } Write(na.FieldOrPropName); Write(na.FixedArg, writer); }
internal CustomAttrib.NamedArg ReadNamedArg(byte [] data, BinaryReader br, ref bool read) { CustomAttrib.NamedArg na = new CustomAttrib.NamedArg(); byte kind = br.ReadByte(); if (kind == 0x53) // field { na.Field = true; na.Property = false; } else if (kind == 0x54) // property { na.Field = false; na.Property = true; } else { throw new MetadataFormatException("Wrong kind of namedarg found: 0x" + kind.ToString("x2")); } bool array = false; na.FieldOrPropType = (ElementType)br.ReadByte(); if (na.FieldOrPropType == ElementType.SzArray) { na.FieldOrPropType = (ElementType)br.ReadByte(); array = true; } int next, length; if (na.FieldOrPropType == ElementType.Enum) { read = false; return(na); } length = Utilities.ReadCompressedInteger(data, (int)br.BaseStream.Position, out next); br.BaseStream.Position = next; // COMPACT FRAMEWORK NOTE: Encoding.GetString(byte[]) is not supported. byte [] bytes = br.ReadBytes(length); na.FieldOrPropName = Encoding.UTF8.GetString(bytes, 0, bytes.Length); na.FixedArg = ReadFixedArg(data, br, array, na.FieldOrPropType, ref read); return(na); }
CustomAttrib.NamedArg CreateNamedArg(TypeReference type, string name, object value, bool field) { CustomAttrib.NamedArg na = new CustomAttrib.NamedArg (); na.Field = field; na.Property = !field; na.FieldOrPropName = name; na.FieldOrPropType = GetCorrespondingType (type.FullName); na.FixedArg = CreateFixedArg (type, value); return na; }
internal CustomAttrib.NamedArg ReadNamedArg(byte [] data, BinaryReader br, ref bool read, bool resolve) { CustomAttrib.NamedArg na = new CustomAttrib.NamedArg (); byte kind = br.ReadByte (); if (kind == 0x53) { // field na.Field = true; na.Property = false; } else if (kind == 0x54) { // property na.Field = false; na.Property = true; } else throw new MetadataFormatException ("Wrong kind of namedarg found: 0x" + kind.ToString("x2")); TypeReference elemType = ReadTypeReference (data, br, out na.FieldOrPropType); na.FieldOrPropName = ReadUTF8String (data, br); na.FixedArg = ReadFixedArg (data, br, elemType, ref read, resolve); return na; }
internal CustomAttrib.NamedArg ReadNamedArg(byte [] data, BinaryReader br, ref bool read) { CustomAttrib.NamedArg na = new CustomAttrib.NamedArg (); byte kind = br.ReadByte (); if (kind == 0x53) { // field na.Field = true; na.Property = false; } else if (kind == 0x54) { // property na.Field = false; na.Property = true; } else throw new MetadataFormatException ("Wrong kind of namedarg found: 0x" + kind.ToString("x2")); bool array = false; na.FieldOrPropType = (ElementType) br.ReadByte (); if (na.FieldOrPropType == ElementType.SzArray) { na.FieldOrPropType = (ElementType) br.ReadByte (); array = true; } int next, length; if (na.FieldOrPropType == ElementType.Enum) { read = false; return na; } length = Utilities.ReadCompressedInteger (data, (int) br.BaseStream.Position, out next); br.BaseStream.Position = next; // COMPACT FRAMEWORK NOTE: Encoding.GetString(byte[]) is not supported. byte [] bytes = br.ReadBytes (length); na.FieldOrPropName = Encoding.UTF8.GetString (bytes, 0, bytes.Length); na.FixedArg = ReadFixedArg (data, br, array, na.FieldOrPropType, ref read); return na; }