Suppose I have some IEqualityComparer<in T> implemented. I have some constraints in my framework and I am using the microsoft MVVM framework. So the moment I am calling the functionality, my T will be of type object, while I know that the underlying values are in this case double.
I receive an InvalidCastException:
Unhandled exception. System.InvalidCastException: Unable to cast object of type 'DoubleEqualityComparer' to type 'System.Collections.Generic.IEqualityComparer`1[System.Object]'
I tried the same with a class Foo, but also no luck with the cast. I expected that because T is only in, that it would resolve well. What am I missing?
using System.Collections.Generic;
public class DoubleEqualityComparer : IEqualityComparer<double>
{
    public bool Equals(double a, double b)
    {
        return true;
    }
    
    public int GetHashCode(double a)
    {
        return a.GetHashCode();
    }
}
public class Program
{
    public static void Main()
    {
        var comparer = new DoubleEqualityComparer();
        var objectComparer = (IEqualityComparer<object>)comparer;
    }
}