У меня есть класс, который принимает тип Generic как часть его инициализации.Инициализация общей переменной из переменной типа C#
public class AnimalContext<T>
{
public DoAnimalStuff()
{
//AnimalType Specific Code
}
}
Что я могу сделать прямо сейчас
AnimalContext<Donkey> donkeyContext = new AnimalContext<Donkey>();
AnimalContext<Orca> orcaContext = new AnimalContext<Orca>();
Но что мне нужно/хочу сделать, это быть в состоянии объявить AnimalContext инициализирован к типу, который известен только во время выполнения. Например,
Animal a = MyFavoriteAnimal(); //returns an instance of a class
//implementing an animal
AnimalContext<a.GetType()> a_Context = new AnimalContext<a.GetType()>();
a_Context.DoAnimalStuff();
Возможно ли это? Кажется, я не могу найти ответ для этого онлайн.
Все, кто ответил, дали ответ, который предоставил немного больше информации, чем предыдущий ответ. Все были верны и превосходны по качеству, но только один может быть выбран как «Ответ», поэтому я выбрал именно тот, который был наиболее наглядным. Я хотел бы поблагодарить всех, кто ответил, и я ценю всю помощь (особенно поздно вечером в воскресенье). –
Что делать, если мой класс не является общим, но внутри метода является то, как я буду использовать MakeGenericType в этом случае –