【发布时间】:2011-07-01 07:47:09
【问题描述】:
我有一个抽象的泛型类。我想在里面定义一个方法,这样我就不必在所有派生类中都这样做了。
基本上我需要根据泛型类的类型来获取存储库类。
我通过另一个非通用类获取存储库。
如何让该类根据通用调用者的类型返回通用存储库?
我希望有这样的东西。
public IRepository<T> Table<T>()
{
return _container.Resolve<IRepository<T>>();
}
如果它是一个属性会更好。
【问题讨论】:
-
该代码可以工作,那么问题是什么?
-
@Aliostad 编译器不同意类型“T”不能用作泛型类型或方法“Data.IRepository
”中的类型参数“T”。没有从“T”到“IdentifiableModel”的装箱转换或类型参数转换 -
好吧,如果我最后说 Where T : IdentifiableModel 就可以了。
-
防止容器本身在该基类中。这是服务定位器模式的一种形式。尝试注入一个
IRepositoryFactory,让您可以解析您的存储库。 -
@Steven 我对 DI 和 IOC 容器真的很陌生,感觉有点不知所措。我不确定我现在是否敢尝试添加工厂。
标签: c# generics methods properties