我想使用未知类实例化一个接口,但是这个类实现了接口。 我真的不知道怎么做。我发现最接近的是:
IClientHandler handler = (IClientHandler)Activator.CreateInstance(typeof(T));
哪个不起作用。
handler是一个接口,T是一个派生自实现IClientHandler的基类(ClientBase)的类。 我想在运行时传递T的类型。
答案 0 :(得分:1)
您可以向T
添加一个类型constaint,要求它实现IClientHandler
。您甚至可以添加new()
约束来要求类型T
具有默认构造函数,这样您就可以避免使用Activator.CreateInstance
并直接创建新对象:
public void SomeMethod<T> ()
where T : IClientHandler, new()
{
IClientHandler handler = new T();
// do stuff
}