我创建了一个泛型类,但我知道运行时的类型,而不是设计中的类型,所以我想知道如何在运行时设置类型。
例如,我有:
public class MyGenericClass<T>
{
....
}
然后我尝试使用它。我在其他类中有一个方法,它消耗这个通用类。在此类的构造函数中,我接收所需的类型作为参数,因此我有一个类型属性,可在其中保存所需的类型。所以我正在尝试这个:
MyGenericClass<_typeNeeded> myClass = new MyGenericClass<typeNeeded>();
但这是行不通的。
如何在我创建的类中设置运行时的类型?
我正在使用 C# 4.0。
谢谢。
戴姆洛克。
编辑:我想做的是以下内容。我有一个类需要对数据库进行一些查询。这个查询总是返回相同的信息,一个类,但是包含这个类的信息来自不同的表。这是因为我需要确定要使用什么查询。为了决定使用什么查询,我使用收到的类型。
正是因为这个原因,我在设计时不知道类型,但在运行时知道。
我可以使用一个将由类实现的接口,并使用用正确的类实例化的接口,但这使我在实例化时有一个 switch 或 if ,这是我试图避免的,我想要更通用的东西。另外,如果我使用这个解决方案,在实例化的那一刻有一个 if,我可以创建泛型类,所以我只有一个类,并且它会更易于维护。
看看MakeGenericType方法。您可以使用它来创建一个Type
实例(然后可用于创建该类型的实例),其通用参数值在运行时确定。但请注意,每当处理该对象的通用特征时,您都需要更多的反思;您不能在类型为带有变量类型参数的泛型类型的代码中创建变量。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)