AsmResolver.Net.Metadata.ReferenceImporter.ImportType C# (CSharp) Method

ImportType() public method

public ImportType ( ITypeDefOrRef type ) : ITypeDefOrRef
type ITypeDefOrRef
return ITypeDefOrRef
        public ITypeDefOrRef ImportType(ITypeDefOrRef type)
        {
            var typeRef = type as TypeReference;
            if (typeRef != null)
                return ImportType(typeRef);

            var typeDef = type as TypeDefinition;
            if (typeDef != null)
                return ImportType(typeDef);

            var typeSpec = type as TypeSpecification;
            if (typeSpec != null)
                return ImportType(typeSpec);

            throw new NotSupportedException();
        }

Same methods

ReferenceImporter::ImportType ( Type type ) : ITypeDefOrRef
ReferenceImporter::ImportType ( TypeDefinition definition ) : ITypeDefOrRef
ReferenceImporter::ImportType ( TypeSpecification specification ) : ITypeDefOrRef
ReferenceImporter::ImportType ( TypeReference reference ) : TypeReference

Usage Example

Ejemplo n.º 1
0
        public void TestInterpretAsArray()
        {
            var elementType = ElementType.I4;
            int[] expected = new int[] { 1, 2, 3 };
            byte[] data = new byte[] { 1, 0, 0, 0, 2, 0, 0, 0, 3, 0, 0, 0 };

            var assembly = Utilities.CreateTempNetAssembly();
            var importer = new ReferenceImporter(assembly.NetDirectory.MetadataHeader.GetStream<TableStream>());
            var fieldType = new TypeDefinition(string.Empty, "__StaticArrayInitTypeSize=" + data.Length,
                 importer.ImportType(typeof(ValueType)));

            var field = new FieldDefinition(FieldName,
                FieldAttributes.Public | FieldAttributes.Static | FieldAttributes.HasFieldRva,
                new FieldSignature(new TypeDefOrRefSignature(fieldType) { IsValueType = true }));

            var fieldRva = new FieldRva(field, data);

            int[] actual = fieldRva.InterpretAsArray(elementType).Cast<int>().ToArray();

            Assert.AreEqual(expected.Length, actual.Length, "Length of arrays differ.");
            for (int i = 0; i < actual.Length; i++)
                Assert.AreEqual(expected[i], actual[i], "Element " + i + " differs from expected.");
        }
All Usage Examples Of AsmResolver.Net.Metadata.ReferenceImporter::ImportType