public static string GetFullName(this ScopeReferenceHandle scopeRefHandle, MetadataReader reader)
        {
            var scopeRef = scopeRefHandle.GetScopeReference(reader);

            Debug.Assert(!scopeRef.Name.IsNull(reader));

            var assemblyName = new AssemblyName
            {
                Name        = scopeRef.Name.GetConstantStringValue(reader).Value,
                CultureName = scopeRef.Culture.IsNull(reader) ? null : scopeRef.Culture.GetConstantStringValue(reader).Value,
                Version     = new Version(scopeRef.MajorVersion, scopeRef.MinorVersion, scopeRef.BuildNumber, scopeRef.RevisionNumber)
            };

            if (scopeRef.PublicKeyOrToken.Count > 0)
            {
                var pkt   = new byte[scopeRef.PublicKeyOrToken.Count];
                int index = 0;
                foreach (var b in scopeRef.PublicKeyOrToken)
                {
                    pkt[index++] = b;
                }
                assemblyName.SetPublicKeyToken(pkt);
            }
            else
            {
                assemblyName.SetPublicKeyToken(Array.Empty <byte>());
            }

            return(assemblyName.FullName);
        }
Esempio n. 2
0
        public static RuntimeAssemblyName ToRuntimeAssemblyName(this ScopeReferenceHandle scopeReferenceHandle, MetadataReader reader)
        {
            ScopeReference scopeReference = scopeReferenceHandle.GetScopeReference(reader);

            return(CreateRuntimeAssemblyNameFromMetadata(
                       reader,
                       scopeReference.Name,
                       scopeReference.MajorVersion,
                       scopeReference.MinorVersion,
                       scopeReference.BuildNumber,
                       scopeReference.RevisionNumber,
                       scopeReference.Culture,
                       scopeReference.PublicKeyOrToken,
                       scopeReference.Flags
                       ));
        }