给定以下接口:
public interface IContext {
TOutput get<TInput, TOutput>(TInput command);
}
以及以下实现:
public class DbContext: IContext {}
public class Repository {
private readonly IContext _context;
public Repository(IContext context) {...}
public IDto get(int id) {
var data = _context.get<IThis, IThat>(id)
//map data to dto and return
}
}
由于我将IContext
依赖项传递到Repository
类中,因此我不希望接口上有类型参数,因为它会锁定我使用 IContext 的显式实现。有点静音接口的点对吗?
鉴于我在接口上没有类型参数的限制,我该IContext
如何实现IContext
以便我可以_context.get(...)
在我的Repository
类中调用而不是_context.get<IThis, IThat>(...)
?
所以换句话说,我希望IContext
(在这个例子DBContext
中)的实现来定义类型参数,get()
这样当方法被实际调用时,调用者不需要知道任何关于要传递的类型参数的信息。
更新
我要解决的问题是允许将任何类型的内容IContext
传递到存储库中。如果我在接口上有类级别的类型参数,那么我仅限于 的实现IContext<TThis, TThat>
,这并不理想。