/// <summary> /// Constructor /// </summary> /// <param name="name">Assembly name</param> public DmdReadOnlyAssemblyName(IDmdAssemblyName name) { if (name == null) { throw new ArgumentNullException(nameof(name)); } Name = name.Name; Version = name.Version; CultureName = name.CultureName; RawFlags = name.RawFlags; publicKey = DmdAssemblyName.CloneArray(name.GetPublicKey()); publicKeyToken = DmdAssemblyName.CloneArray(name.GetPublicKeyToken()); HashAlgorithm = name.HashAlgorithm; }
/// <summary> /// Compares two assembly names /// </summary> /// <param name="a">First assembly name</param> /// <param name="b">Second assembly name</param> /// <returns></returns> public bool Equals(IDmdAssemblyName a, IDmdAssemblyName b) { if ((object)a == b) { return(true); } if ((object)a == null || (object)b == null) { return(false); } // We do not compare the version number. The runtime can redirect an assembly // reference from a requested version to any other version. const DmdAssemblyNameFlags flagsMask = DmdAssemblyNameFlags.ContentType_Mask; return((a.RawFlags & flagsMask) == (b.RawFlags & flagsMask) && StringComparer.OrdinalIgnoreCase.Equals(a.Name, b.Name) && StringComparer.OrdinalIgnoreCase.Equals(a.CultureName ?? string.Empty, b.CultureName ?? string.Empty) && Impl.AssemblyNameEqualityComparer.PublicKeyTokenEquals(a.GetPublicKeyToken(), b.GetPublicKeyToken())); }
public static void FormatFullNameTo(this IDmdAssemblyName self, StringBuilder sb) => DmdAssemblyNameFormatter.Format(sb, self.Name, self.Version, self.CultureName, self.GetPublicKeyToken(), self.RawFlags, isPublicKeyToken: true);