Beispiel #1
0
        private static RuntimeAssemblyName CreateRuntimeAssemblyNameFromMetadata(
            MetadataReader reader,
            StringHandle name,
            Version version,
            StringHandle culture,
            BlobHandle publicKeyOrToken,
            AssemblyFlags assemblyFlags)
        {
            AssemblyNameFlags assemblyNameFlags = AssemblyNameFlags.None;

            if (0 != (assemblyFlags & AssemblyFlags.PublicKey))
            {
                assemblyNameFlags |= AssemblyNameFlags.PublicKey;
            }
            if (0 != (assemblyFlags & AssemblyFlags.Retargetable))
            {
                assemblyNameFlags |= AssemblyNameFlags.Retargetable;
            }
            int contentType = ((int)assemblyFlags) & 0x00000E00;

            assemblyNameFlags |= (AssemblyNameFlags)contentType;

            return(new RuntimeAssemblyName(
                       name.GetString(reader),
                       version,
                       culture.GetString(reader),
                       assemblyNameFlags,
                       reader.GetBlobContent(publicKeyOrToken).ToArray()
                       ));
        }
Beispiel #2
0
        private static RuntimeAssemblyName CreateRuntimeAssemblyNameFromMetadata(
            MetadataReader reader,
            StringHandle name,
            Version version,
            StringHandle culture,
            BlobHandle publicKeyOrToken,
            AssemblyFlags assemblyFlags)
        {
            AssemblyNameFlags assemblyNameFlags = AssemblyNameFlags.None;

            if (0 != (assemblyFlags & AssemblyFlags.PublicKey))
            {
                assemblyNameFlags |= AssemblyNameFlags.PublicKey;
            }
            if (0 != (assemblyFlags & AssemblyFlags.Retargetable))
            {
                assemblyNameFlags |= AssemblyNameFlags.Retargetable;
            }
            int contentType = ((int)assemblyFlags) & 0x00000E00;

            assemblyNameFlags |= (AssemblyNameFlags)contentType;

            byte[] publicKeyOrTokenByteArray;
            if (!publicKeyOrToken.IsNil)
            {
                ImmutableArray <byte> publicKeyOrTokenBlob = reader.GetBlobContent(publicKeyOrToken);
                publicKeyOrTokenByteArray = new byte[publicKeyOrTokenBlob.Length];
                publicKeyOrTokenBlob.CopyTo(publicKeyOrTokenByteArray);
            }
            else
            {
                publicKeyOrTokenByteArray = Array.Empty <byte>();
            }

            string cultureName = culture.GetString(reader);

            if (!String.IsNullOrEmpty(cultureName))
            {
                // Canonicalize spelling and force a CultureNotFoundException if not a valid culture
                CultureInfo cultureInfo = CultureInfo.GetCultureInfo(cultureName);
                cultureName = cultureInfo.Name;
            }

            return(new RuntimeAssemblyName(
                       name.GetString(reader),
                       version,
                       cultureName,
                       assemblyNameFlags,
                       publicKeyOrTokenByteArray
                       ));
        }
        private static RuntimeAssemblyName CreateRuntimeAssemblyNameFromMetadata(
            MetadataReader reader,
            StringHandle name,
            Version version,
            StringHandle culture,
            BlobHandle publicKeyOrToken,
            AssemblyFlags assemblyFlags)
        {
            AssemblyNameFlags assemblyNameFlags = AssemblyNameFlags.None;

            if (0 != (assemblyFlags & AssemblyFlags.PublicKey))
            {
                assemblyNameFlags |= AssemblyNameFlags.PublicKey;
            }
            if (0 != (assemblyFlags & AssemblyFlags.Retargetable))
            {
                assemblyNameFlags |= AssemblyNameFlags.Retargetable;
            }
            int contentType = ((int)assemblyFlags) & 0x00000E00;

            assemblyNameFlags |= (AssemblyNameFlags)contentType;

            byte[] publicKeyOrTokenByteArray;
            if (!publicKeyOrToken.IsNil)
            {
                ImmutableArray <byte> publicKeyOrTokenBlob = reader.GetBlobContent(publicKeyOrToken);
                publicKeyOrTokenByteArray = new byte[publicKeyOrTokenBlob.Length];
                publicKeyOrTokenBlob.CopyTo(publicKeyOrTokenByteArray);
            }
            else
            {
                publicKeyOrTokenByteArray = Array.Empty <byte>();
            }

            return(new RuntimeAssemblyName(
                       name.GetString(reader),
                       version,
                       culture.GetString(reader),
                       assemblyNameFlags,
                       publicKeyOrTokenByteArray
                       ));
        }
        private static RuntimeAssemblyName CreateRuntimeAssemblyNameFromMetadata(
            MetadataReader reader,
            StringHandle name,
            Version version,
            StringHandle culture,
            BlobHandle publicKeyOrToken,
            AssemblyFlags assemblyFlags)
        {
            AssemblyNameFlags assemblyNameFlags = AssemblyNameFlags.None;
            if (0 != (assemblyFlags & AssemblyFlags.PublicKey))
                assemblyNameFlags |= AssemblyNameFlags.PublicKey;
            if (0 != (assemblyFlags & AssemblyFlags.Retargetable))
                assemblyNameFlags |= AssemblyNameFlags.Retargetable;
            int contentType = ((int)assemblyFlags) & 0x00000E00;
            assemblyNameFlags |= (AssemblyNameFlags)contentType;

            return new RuntimeAssemblyName(
                name.GetString(reader),
                version,
                culture.GetString(reader),
                assemblyNameFlags,
                reader.GetBlobContent(publicKeyOrToken).ToArray()
                );
        }
Beispiel #5
0
        public int CompareTo(StringHandle that)
        {
            if (type == StringHandleType.UTF8 && that.type == StringHandleType.UTF8)
                return bufferReader.Compare(offset, length, that.offset, that.length);

            return string.Compare(GetString(), that.GetString(), StringComparison.Ordinal);
        }
Beispiel #6
0
 private bool Equals2(StringHandle s2)
 {
     switch (s2.type)
     {
         case StringHandleType.UTF8:
             return Equals2(s2.offset, s2.length, s2.bufferReader);
         default:
             return Equals2(s2.GetString());
     }
 }