Given the following code:
class A<T>
{
internal void Add(T obj) { }
}
class C { }
class B<T> where T : C
{
public B()
{
A<T> a = new A<T>();
a.Add(new C());
}
}
The call to Add does not compile. It does when I cast it to T first:
a.Add((T)new C());
It might be the sleep deprivation, but what am I missing here?
If T is of type C (note the constraint on B), then why isn't A<T> equivalent to A<C>?