using System; using System.Collections.Generic; namespace PortingAssistant.Client.Model { public class PackageDetails { public string Name { get; set; } public SortedSet Versions { get; set; } public Dictionary> Targets { get; set; } public LicenseDetails License { get; set; } public ApiDetails[] Api { get; set; } public bool IsDeprecated { get; set; } // only for namespace public string[] Namespaces { get; set; } public string[] Assemblies { get; set; } public override bool Equals(object obj) { return obj is PackageDetails details && Name == details.Name && EqualityComparer>.Default.Equals(Versions, details.Versions) && EqualityComparer>>.Default.Equals(Targets, details.Targets) && EqualityComparer.Default.Equals(License, details.License) && EqualityComparer.Default.Equals(Api, details.Api); } public override int GetHashCode() { return HashCode.Combine(Name, Versions, Targets, License, Api); } } public class LicenseDetails { public Dictionary> License { get; set; } public override bool Equals(object obj) { return obj is LicenseDetails details && EqualityComparer>>.Default.Equals(License, details.License); } public override int GetHashCode() { return HashCode.Combine(License); } } public class ApiDetails { public string MethodSignature { get; set; } public string MethodNameSpace { get; set; } public string MethodName { get; set; } public string[] MethodParameters { get; set; } public string MethodReturnValue { get; set; } public Dictionary> Targets { get; set; } public override bool Equals(object obj) { return obj is ApiDetails details && MethodSignature == details.MethodSignature && MethodNameSpace == details.MethodNameSpace && MethodName == details.MethodName && EqualityComparer.Default.Equals(MethodParameters, details.MethodParameters) && MethodReturnValue == details.MethodReturnValue && EqualityComparer>>.Default.Equals(Targets, details.Targets); } public override int GetHashCode() { return HashCode.Combine(MethodSignature, MethodNameSpace, MethodName, MethodParameters, MethodReturnValue, Targets); } } }