基于C#中的Type参数的泛型返回类型

Ore*_*ren 1 c# generics

我有一个带有字典的类,它将Type键映射到实现某个接口的对象IWhatever.

我希望创建一个泛型函数,它将Type作为输入,并返回映射到字典中该类型的对象.

就像是 :

public T get<T>(Type type) 
Run Code Online (Sandbox Code Playgroud)

其中T是类型和类型实现的实例IWhatever.

我不想返回Object,甚至不想返回Iwhatever给定类型的对象.返回对象的类型可以在编译时明显地进行.所以我认为它应该是可能的.

我已经设法在java中这样做:

public T get<T>(Class<T extends IWhatever> type) { // implementation }
Run Code Online (Sandbox Code Playgroud)

有没有办法在C#中实现这一目标?如果没有,为什么不,你会建议什么选择?

Ani*_*Ani 7

我想你想要:

public T Get<T>() where T : IWhatever { ... } 
Run Code Online (Sandbox Code Playgroud)

有关更多信息,请参阅类型参数约束(C#编程指南).

当客户端可以在编译时轻松提供类型参数时,这当然有用.在内部,您的方法可能需要很多肮脏,例如:

return (T) myDict[typeof(T)];
Run Code Online (Sandbox Code Playgroud)