Как правильно поступить, у меня есть интерфейс(ICommon<T>), есть его несколько реализаций (HelloInt:ICommon<int>, HelloDouble:ICommon<double>). Теперь я хотел бы создать список List<ICommon<T>>. Как это реализовать, и реализуется ли это вообще.
class Program
{
static void Main(string[] args)
{
List<ICommon<T>> com = new List<ICommon<T>>()
{
new HelloInt(),
new HelloDouble()
};
}
}
public interface ICommon<T>
{
T Hello();
}
public class HelloInt : ICommon<int>
{
public int Hello()
{
return 1;
}
}
public class HelloDouble : ICommon<double>
{
public double Hello()
{
return 2.0;
}
}
var list = new ArrayList() { new HelloInt(), new HelloDouble() };
что мешает сделать так?
Вам нужно при использовании вашего интерфейса указывать не шаблон, а конкретный тип.
Например:
public interface ITest<T> where T: class
{
T TestMethod1();
T TestMethod2();
}
List<ITest<object>> testObjects = new List<ITest<object>>();
var list = new List<Object> { new HelloInt(), new HelloDouble() };
Console.WriteLine(((ICommon<int>)list[0]).Hello());
либо
ArrayList arrayList = new ArrayList() { new HelloDouble(), new HelloInt() };
Console.WriteLine(((ICommon<double>)arrayList[0]).Hello());
Основные этапы разработки сайта для стоматологической клиники
Продвижение своими сайтами как стратегия роста и независимости