Подстановка типа в универсальный метод - C#
Формулировка задачи:
Всем здравствовать.
Вопрос:
Можно ли в универсальном методе не указывать тип T явно, а подставлять вместо него некоторую переменную типа? Переменную типа Type поставить не получается. Хотелось бы достичь следующего вида кода:
Совсем бесполезная затея или есть вариант, похожий на представленный выше?
Надеюсь на ваши ответы.
class VisualObject { ... }
class VisualObjectHeir : VisualObject { ... }
public List<T> GetObject<T>() where T : VisualObject
{ ... }
static void Main()
{
VisualObjectHeir visualObjectHeir = new VisualObjectHeir();
Type t = visualObjectHeir.GetType();
List<t> = GetMap<t>();
}Решение задачи: «Подстановка типа в универсальный метод»
textual
Листинг программы
class Program
{
class Block
{
public string name;
}
class Block1 : Block
{
}
class Block2 : Block
{
}
class UniMap
{
List<Block> mapT = new List<Block>();
public string Name;
public Block this[int index]
{
get { return mapT[index]; }
set { mapT[index] = value; }
}
}
class UniMaps
{
Dictionary<Type, UniMap> uniMaps = new Dictionary<Type, UniMap>()
{
{ typeof(Block1), new UniMap() { Name ="Block1 map" } },
{ typeof(Block2), new UniMap() { Name ="Block2 map" } },
};
public UniMap GetUniMap(Block Block)
{
if (uniMaps.ContainsKey(Block.GetType()))
{
return uniMaps[Block.GetType()];
} else throw new Exception("Нет карты необходимого типа.");
}
}
static void Main(string[] args)
{
UniMaps UM = new UniMaps();
Block b = new Block1();
UniMap map = UM.GetUniMap(b);
Console.WriteLine(map.Name);
Console.ReadLine();
}
}