Как правильно поступить, у меня есть интерфейс(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());
Айфон мало держит заряд, разбираемся с проблемой вместе с AppLab
Учительница задала Пете домашнее задание — в заданном тексте расставить ударения в словах, после чего поручила Васе проверить это домашнее...
В ListBox загонятеся отсортированный массив с числами по убываниюКак можно можно выделить первые 3 элемента другим цветом
В своём приложении я использую Redis в качестве кэш-хранилища, куда в процессе работы заносятся разные данныеНекоторые хранятся там временно...