2015-10-06 72 views
-3

我有实现界面下方的一些类:如何实例化一个接口,一个泛型参数

ISearchBase<T> 

但我不知道哪一个类将被实例化,所以我让“用户决定” ,如下面的例子:

var objectResponse = Activator.CreateInstance(Type.GetType(ResponseNamespace)); 

的问题是: 每个这些类有回报,我试图用这样的:

var object = (ISearchBase<objectResponse >) 
      Activator.CreateInstance(Type.GetType(Namespace)); 

但编译器不会让我这样做......我该怎么办?

的错误是:

类型或命名空间名称 'objectResponse' 找不到。

+0

编译器给你什么错误? –

+0

有回报吗?你遇到了什么错误?你不能实例化接口,那么你是否可以更清楚地知道你遇到麻烦的位置? – BradleyDotNET

+1

你不能实例化接口。你绝对需要为你的文章增加一些清晰度。 –

回答

1

当你做你var object = (ISearchBase<X>)...必须知道在编译时类型Xvar关键字只是编译器推断类型的简称。因此,您不能使用运行时类型来解决X

创建完成后,您还没有向您展示如何处理object。当然可以使用反射来调用泛型方法来允许您使用类型安全的代码,但是如果没有看到更多的代码,我无法判断它是否对您有用。

相关问题