mirror of
https://github.com/zoriya/Kyoo.git
synced 2025-07-09 03:04:20 -04:00
Basic cleanups of IResourceLink equality checkers
This commit is contained in:
parent
079df8a1c7
commit
1902740d2f
@ -40,11 +40,12 @@ namespace Kyoo.Models
|
||||
}
|
||||
}
|
||||
|
||||
public class LinkComparer<T, T2> : IEqualityComparer<IResourceLink<T, T2>>
|
||||
where T : IResource
|
||||
public class LinkComparer<T, T1, T2> : IEqualityComparer<T>>
|
||||
where T : IResourceLink<T1, T2>
|
||||
where T1 : IResource
|
||||
where T2 : IResource
|
||||
{
|
||||
public bool Equals(IResourceLink<T, T2> x, IResourceLink<T, T2> y)
|
||||
public bool Equals(T x, T y)
|
||||
{
|
||||
if (ReferenceEquals(x, y))
|
||||
return true;
|
||||
@ -58,7 +59,7 @@ namespace Kyoo.Models
|
||||
&& Utility.LinkEquals(x.Child, x.ChildID, y.Child, y.ChildID);
|
||||
}
|
||||
|
||||
public int GetHashCode(IResourceLink<T, T2> obj)
|
||||
public int GetHashCode(T obj)
|
||||
{
|
||||
return HashCode.Combine(obj.Parent, obj.ParentID, obj.Child, obj.ChildID);
|
||||
}
|
||||
|
@ -356,8 +356,10 @@ namespace Kyoo
|
||||
Type type = GetEnumerableType(eno);
|
||||
if (typeof(IResource).IsAssignableFrom(type))
|
||||
return ResourceEquals(eno.Cast<IResource>(), ens.Cast<IResource>());
|
||||
// TODO find a way to run the equality checker with the right check.
|
||||
// TODO maybe create a GetTypeOfGenericType
|
||||
// if (IsOfGenericType(type, typeof(IResourceLink<,>)))
|
||||
// return ResourceEquals(eno.Cast<IResourceLink<,>>())
|
||||
// return ResourceEquals(eno.Cast<IResourceLink<,>>())
|
||||
return RunGenericMethod<bool>(typeof(Enumerable), "SequenceEqual", type, first, second);
|
||||
}
|
||||
|
||||
@ -393,7 +395,18 @@ namespace Kyoo
|
||||
&& first.ID == secondID)
|
||||
return true;
|
||||
return firstID == secondID;
|
||||
|
||||
}
|
||||
|
||||
public static bool LinkEquals<T, T1, T2>([CanBeNull] IEnumerable<T> first, [CanBeNull] IEnumerable<T> second)
|
||||
where T : IResourceLink<T1, T2>
|
||||
where T1 : IResource
|
||||
where T2 : IResource
|
||||
{
|
||||
if (ReferenceEquals(first, second))
|
||||
return true;
|
||||
if (first == null || second == null)
|
||||
return false;
|
||||
return first.SequenceEqual(second, new LinkComparer<T, T1, T2>());
|
||||
}
|
||||
|
||||
public static Expression<T> Convert<T>([CanBeNull] this Expression expr)
|
||||
|
Loading…
x
Reference in New Issue
Block a user