private ImmutableArray <CustomAttributeNamedArgument <TType> > DecodeNamedArguments(ref BlobReader valueReader) { int count = valueReader.ReadUInt16(); if (count == 0) { return(ImmutableArray <CustomAttributeNamedArgument <TType> > .Empty); } var arguments = ImmutableArray.CreateBuilder <CustomAttributeNamedArgument <TType> >(count); for (int i = 0; i < count; i++) { CustomAttributeNamedArgumentKind kind = (CustomAttributeNamedArgumentKind)valueReader.ReadSerializationTypeCode(); if (kind != CustomAttributeNamedArgumentKind.Field && kind != CustomAttributeNamedArgumentKind.Property) { throw new BadImageFormatException(); } ArgumentTypeInfo info = DecodeNamedArgumentType(ref valueReader); string? name = valueReader.ReadSerializedString(); CustomAttributeTypedArgument <TType> argument = DecodeArgument(ref valueReader, info); arguments.Add(new CustomAttributeNamedArgument <TType>(name, kind, argument.Type, argument.Value)); } return(arguments.MoveToImmutable()); }
public CustomAttributeNamedArgument(string name, CustomAttributeNamedArgumentKind kind, TType type, object value) { Name = name; Kind = kind; Type = type; Value = value; }