使用未知但派生类型实例化接口

时间:2015-10-21 09:18:40

标签: c# interface

我想使用未知类实例化一个接口,但是这个类实现了接口。 我真的不知道怎么做。我发现最接近的是:

IClientHandler handler = (IClientHandler)Activator.CreateInstance(typeof(T));

哪个不起作用。

handler是一个接口,T是一个派生自实现IClientHandler的基类(ClientBase)的类。 我想在运行时传递T的类型。

1 个答案:

答案 0 :(得分:1)

您可以向T添加一个类型constaint,要求它实现IClientHandler。您甚至可以添加new()约束来要求类型T具有默认构造函数,这样您就可以避免使用Activator.CreateInstance并直接创建新对象:

public void SomeMethod<T> ()
    where T : IClientHandler, new()
{
    IClientHandler handler = new T();
    // do stuff
}