AsmResolver.Net.Signatures.ElementSignature.FromReader C# (CSharp) Method

FromReader() public static method

public static FromReader ( MetadataHeader header, TypeSignature typeSignature, IBinaryStreamReader reader ) : ElementSignature
header MetadataHeader
typeSignature TypeSignature
reader IBinaryStreamReader
return ElementSignature
        public static ElementSignature FromReader(MetadataHeader header, TypeSignature typeSignature, IBinaryStreamReader reader)
        {
            long position = reader.Position;
            return new ElementSignature(ReadValue(header, typeSignature, reader))
            {
                StartOffset = position
            };
        }

Usage Example

        public static CustomAttributeArgument FromReader(MetadataHeader header, TypeSignature typeSignature, IBinaryStreamReader reader)
        {
            var signature = new CustomAttributeArgument()
            {
                ArgumentType = typeSignature
            };

            if (typeSignature.ElementType != ElementType.SzArray)
            {
                signature.Elements.Add(ElementSignature.FromReader(header, typeSignature, reader));
            }
            else
            {
                var arrayType = ((SzArrayTypeSignature)typeSignature).BaseType;

                var elementCount = reader.CanRead(sizeof(uint)) ? reader.ReadUInt32() : uint.MaxValue;
                if (elementCount != uint.MaxValue)
                {
                    for (uint i = 0; i < elementCount; i++)
                    {
                        signature.Elements.Add(ElementSignature.FromReader(header, arrayType, reader));
                    }
                }
            }

            return(signature);
        }