コード例 #1
0
        /// <summary>
        /// Creates an assembly reference from an assembly reference metadata row.
        /// </summary>
        /// <param name="parentModule">The module that contained the reference.</param>
        /// <param name="token">The token to initialize the reference for.</param>
        /// <param name="row">The metadata table row to base the assembly reference on.</param>
        public SerializedAssemblyReference(SerializedModuleDefinition parentModule, MetadataToken token, AssemblyReferenceRow row)
            : base(token)
        {
            _parentModule = parentModule ?? throw new ArgumentNullException(nameof(parentModule));
            _row          = row;

            Attributes = row.Attributes;
            Version    = new Version(row.MajorVersion, row.MinorVersion, row.BuildNumber, row.RevisionNumber);
        }
コード例 #2
0
        public void RowEnumerationTest()
        {
            var rawRow = new uint[] { 0x0004, 0x0000, 0x0000, 0x0000, 0x00000000, 0x001A, 0x000A, 0x0000, 0x0000 };
            var row    = new AssemblyReferenceRow((ushort)rawRow[0],
                                                  (ushort)rawRow[1], (ushort)rawRow[2], (ushort)rawRow[3], (AssemblyAttributes)rawRow[4],
                                                  rawRow[5], rawRow[6], rawRow[7], rawRow[8]);

            RowTestUtils.VerifyRowColumnEnumeration(rawRow, row);
        }
コード例 #3
0
        /// <inheritdoc />
        public MetadataToken GetAssemblyReferenceToken(AssemblyReference assembly)
        {
            AssertIsImported(assembly);

            var table = Metadata.TablesStream.GetTable <AssemblyReferenceRow>(TableIndex.AssemblyRef);

            var row = new AssemblyReferenceRow((ushort)assembly.Version.Major,
                                               (ushort)assembly.Version.Minor,
                                               (ushort)assembly.Version.Build,
                                               (ushort)assembly.Version.Revision,
                                               assembly.Attributes,
                                               Metadata.BlobStream.GetBlobIndex(assembly.PublicKeyOrToken),
                                               Metadata.StringsStream.GetStringIndex(assembly.Name),
                                               Metadata.StringsStream.GetStringIndex(assembly.Culture),
                                               Metadata.BlobStream.GetBlobIndex(assembly.HashValue));

            var token = table.Add(row);

            AddCustomAttributes(token, assembly);
            return(token);
        }