I have the following interface
public interface IInterface
{
int GetId();
}
ClassA is a generic class but T should implement IInterface
public class ClassA<T> where T : IInterface {
}
ClassB implements IInterface
public class ClassB : IInterface {
public int GetId() {
return 1;
}
}
ClassC is where my problem is, namely adding items to the list.
public class ClassC {
List<ClassA<IInterface>> list = new List<ClassA<IInterface>>();
public void Add<T>(ClassA<T> item) where T : IInterface {
list.Add(item);
}
}
The code above gives the following error which makes sense
cannot convert from 'Program.ClassA<T>' to'Program.ClassA<Program.IInterface>'
The core of the problem is in the Add() method where my goal is to be able to add any type of ClassA. I am not sure how to design this in order to achieve the following
ClassC classC = new ClassC();
ClassA<ClassB> classA = new ClassA<ClassB>();
classC.Add(classA);
Any ideas?