Ejemplo n.º 1
0
        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());
        }
Ejemplo n.º 2
0
 public CustomAttributeNamedArgument(string name, CustomAttributeNamedArgumentKind kind, TType type, object value)
 {
     Name  = name;
     Kind  = kind;
     Type  = type;
     Value = value;
 }