我有一个带有字典的类,它将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#中实现这一目标?如果没有,为什么不,你会建议什么选择?
我想你想要:
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)