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

ImportTypeSignature() public method

public ImportTypeSignature ( Type type ) : TypeSignature
type System.Type
return AsmResolver.Net.Signatures.TypeSignature
        public TypeSignature ImportTypeSignature(Type type)
        {
            TypeSignature signature = GetCorLibSignature(type);
            if (signature != null)
                return signature;

            if (type.IsArray)
                return ImportArrayOrSzArrayTypeSignature(type);
            if (type.IsByRef)
                return ImportByRefTypeSignature(type);
            if (type.IsPointer)
                return ImportPointerTypeSignature(type);
            if (type.IsGenericType)
                return ImportGenericInstanceTypeSignature(type);

            return ImportTypeDefOrRefSignature(type);
        }

Same methods

ReferenceImporter::ImportTypeSignature ( TypeSignature signature ) : TypeSignature

Usage Example

Exemplo n.º 1
0
        public void CreateArrayField()
        {
            // set up temp assembly.
            var assembly = Utilities.CreateTempNetAssembly();
            var typeSystem = assembly.NetDirectory.MetadataHeader.TypeSystem;
            var tableStream = assembly.NetDirectory.MetadataHeader.GetStream<TableStream>();
            var fieldTable = tableStream.GetTable<FieldDefinition>();
            var importer = new ReferenceImporter(tableStream);

            // create field.
            var arraySignature = new ArrayTypeSignature(typeSystem.Int32);
            arraySignature.Dimensions.Add(new ArrayDimension(2, 1));
            arraySignature.Dimensions.Add(new ArrayDimension(2));
            arraySignature.Dimensions.Add(new ArrayDimension());

            var field = new FieldDefinition(FieldName, FieldAttributes.Public | FieldAttributes.Static,
                new FieldSignature(importer.ImportTypeSignature(arraySignature)));
            fieldTable.Add(field);

            // build and validate.
            assembly = Utilities.RebuildNetAssembly(assembly);
            fieldTable = assembly.NetDirectory.MetadataHeader.GetStream<TableStream>().GetTable<FieldDefinition>();
            field = fieldTable.First(x => x.Name == FieldName);

            Assert.IsInstanceOfType(field.Signature.FieldType, typeof(ArrayTypeSignature));
            Utilities.ValidateType(arraySignature, field.Signature.FieldType);
        }
All Usage Examples Of AsmResolver.Net.Metadata.ReferenceImporter::ImportTypeSignature