public override int GetHashCode() { unchecked // Overflow is fine, just wrap { var hash = 17; // Suitable nullity checks etc, of course :) hash = hash * 23 + (Name ?? "").GetHashCode(); hash = hash * 23 + (Version ?? "").GetHashCode(); hash = hash * 23 + Created.GetHashCode(); hash = hash * 23 + IsLatestVersion.GetHashCode(); hash = hash * 23 + IsAbsoluteLatestVersion.GetHashCode(); hash = hash * 23 + IsPrerelease.GetHashCode(); hash = hash * 23 + (ReleaseNotes ?? "").GetHashCode(); hash = hash * 23 + (IconUrl ?? "").GetHashCode(); hash = hash * 23 + (Description ?? "").GetHashCode(); return(hash); } }
private PSObject ConvertToCustomObject() { // 1.0.0-alpha1 // 1.0.0.0 string NormalizedVersion = IsPrerelease ? ConcatenateVersionWithPrerelease(Version.ToString(), PrereleaseLabel) : Version.ToString(); var additionalMetadata = new PSObject(); if (!AdditionalMetadata.ContainsKey(nameof(IsPrerelease))) { AdditionalMetadata.Add(nameof(IsPrerelease), IsPrerelease.ToString()); } else { AdditionalMetadata[nameof(IsPrerelease)] = IsPrerelease.ToString(); } // This is added for V2, V3 does not need it. if (!AdditionalMetadata.ContainsKey(nameof(NormalizedVersion))) { AdditionalMetadata.Add(nameof(NormalizedVersion), NormalizedVersion); } else { AdditionalMetadata[nameof(NormalizedVersion)] = NormalizedVersion; } foreach (var item in AdditionalMetadata) { additionalMetadata.Properties.Add(new PSNoteProperty(item.Key, item.Value)); } var psObject = new PSObject(); psObject.Properties.Add(new PSNoteProperty(nameof(Name), Name)); psObject.Properties.Add(new PSNoteProperty(nameof(Version), NormalizedVersion)); psObject.Properties.Add(new PSNoteProperty(nameof(Type), Type)); psObject.Properties.Add(new PSNoteProperty(nameof(Description), Description)); psObject.Properties.Add(new PSNoteProperty(nameof(Author), Author)); psObject.Properties.Add(new PSNoteProperty(nameof(CompanyName), CompanyName)); psObject.Properties.Add(new PSNoteProperty(nameof(Copyright), Copyright)); psObject.Properties.Add(new PSNoteProperty(nameof(PublishedDate), PublishedDate)); psObject.Properties.Add(new PSNoteProperty(nameof(InstalledDate), InstalledDate)); psObject.Properties.Add(new PSNoteProperty(nameof(IsPrerelease), IsPrerelease)); psObject.Properties.Add(new PSNoteProperty(nameof(UpdatedDate), UpdatedDate)); psObject.Properties.Add(new PSNoteProperty(nameof(LicenseUri), LicenseUri)); psObject.Properties.Add(new PSNoteProperty(nameof(ProjectUri), ProjectUri)); psObject.Properties.Add(new PSNoteProperty(nameof(IconUri), IconUri)); psObject.Properties.Add(new PSNoteProperty(nameof(Tags), Tags)); psObject.Properties.Add(new PSNoteProperty(nameof(Includes), Includes.ConvertToHashtable())); psObject.Properties.Add(new PSNoteProperty(nameof(PowerShellGetFormatVersion), PowerShellGetFormatVersion)); psObject.Properties.Add(new PSNoteProperty(nameof(ReleaseNotes), ReleaseNotes)); psObject.Properties.Add(new PSNoteProperty(nameof(Dependencies), Dependencies)); psObject.Properties.Add(new PSNoteProperty(nameof(RepositorySourceLocation), RepositorySourceLocation)); psObject.Properties.Add(new PSNoteProperty(nameof(Repository), Repository)); psObject.Properties.Add(new PSNoteProperty(nameof(PackageManagementProvider), PackageManagementProvider)); psObject.Properties.Add(new PSNoteProperty(nameof(AdditionalMetadata), additionalMetadata)); psObject.Properties.Add(new PSNoteProperty(nameof(InstalledLocation), InstalledLocation)); return(psObject); }