// The Structure of the Container and the items
public interface IContainer <TItem> where TItem : IItem
{
}
public class AContainer : IContainer<ItemA>
{
}
public interface IItem
{
}
public class ItemA : IItem
{
}
// Client app
[Test]
public void Test ()
{
IContainer<IItem> container = new AContainer();
}
Question : In test the following error occures. What can be the solution for casting?
Cannot implicitly convert type ‘AContainer’ to ‘IContainer’. An explicit conversion exists (are you missing a cast?)
Another generics covariant problem…
Generic types in .NET are not covariant or contravariant – IContainer<ItemA> (which is what AContainer is) is not a subclass of IContainer<IItem> – there is no valid cast between the two. This will be fixed in C# 4.