我有一个类需要一个通用类型作为其初始化的一部分。从一个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 –