public static FromReader ( MetadataHeader header, |
||
header | MetadataHeader | |
typeSignature | ||
reader | IBinaryStreamReader | |
Результат |
public static CustomAttributeSignature FromReader(CustomAttribute parent, IBinaryStreamReader reader) { if (!reader.CanRead(sizeof(ushort)) || reader.ReadUInt16() != 0x0001) { throw new ArgumentException("Signature doesn't refer to a valid custom attribute signature."); } var signature = new CustomAttributeSignature(); if (parent.Constructor != null) { var methodSignature = parent.Constructor.Signature as MethodSignature; if (methodSignature != null) { foreach (var parameter in methodSignature.Parameters) { signature.FixedArguments.Add(CustomAttributeArgument.FromReader(parent.Image, parameter.ParameterType, reader)); } } } var namedElementCount = reader.CanRead(sizeof(ushort)) ? reader.ReadUInt16() : 0; for (uint i = 0; i < namedElementCount; i++) { signature.NamedArguments.Add(CustomAttributeNamedArgument.FromReader(parent.Image, reader)); } return(signature); }
public static CustomAttributeNamedArgument FromReader(MetadataImage image, IBinaryStreamReader reader) { var signature = new CustomAttributeNamedArgument { ArgumentMemberType = (reader.CanRead(sizeof(byte)) ? (CustomAttributeArgumentMemberType)reader.ReadByte() : CustomAttributeArgumentMemberType.Field), ArgumentType = TypeSignature.ReadFieldOrPropType(image, reader), MemberName = reader.ReadSerString(), }; signature.Argument = CustomAttributeArgument.FromReader(image, signature.ArgumentType, reader); return(signature); }