【发布时间】:2012-06-10 14:53:01
【问题描述】:
我创建了一个泛型类,但我知道运行时的类型,而不是设计,所以我想知道如何在运行时设置类型。
例如,我有:
public class MyGenericClass<T>
{
....
}
然后我尝试使用它。我在其他类中有一个方法,它使用这个泛型类。在这个类的构造函数中,我接收到我想要的类型作为参数,所以我有一个类型属性,我在其中保存了我需要的类型。所以我正在尝试这个:
MyGenericClass<_typeNeeded> myClass = new MyGenericClass<typeNeeded>();
但这不起作用。
如何在我创建的类中设置运行时类型?
我正在使用 C# 4.0。
谢谢。 戴姆洛克。
编辑:我想要做的是以下。我有一个类需要对数据库进行一些查询。这个查询总是返回相同的信息,一个类,但是包含这个类的信息来自不同的表。这是因为我需要确定要使用的查询。为了决定使用什么查询,我使用收到的类型。
是因为这个原因我在设计时不知道类型,而是在运行时。
我可以使用将由类实现的接口,并使用用正确的类实例化的接口,但这使我在实例化的时刻有一个开关或一个 if,这就是我尽量避免,我想要更通用的东西。另外,如果我使用这个解决方案,在实例化的那一刻有一个 if,我可以创建泛型类,所以我只有一个类,它会更易于维护。
【问题讨论】:
-
如果没有广泛的反思,这是不可能的。
-
你见过this link吗?
-
为什么不用动态关键字?
-
你能说得更具体一点吗?你想达到什么结果?
-
@Mark M:在这个例子中,我如何使用该方法?因为该方法返回一个对象,但我必须首先声明变量 MyGenericClass
miVariable = CreateGeneric...) 但问题是我不知道 T 的类型。但是该示例喜欢我正在寻找的为。
标签: c# generics runtime generic-programming