在一个非泛型工厂类中缓存泛型类型应该怎么办

shuyoufeng 2016-03-26 12:37:45
需求如下:

在框架层面有个抽象的仓储类:

public abstract class Repository<T> : IRepository<T> where T : EntityBase
{
}

// 有一个仓储的工厂类:
internal class RepositoryFactory
{
// 这里该如何声明缓存字段?
private IDictionary<Type, IRepository<>> repoCache = new Dictionary<Type, IRepository<>>();

public IRepository<T> FindByEntity<T>(Type anEntityType)
{
// 这里先通过 repoCache 查找,如果没有则新建并缓存。
throw new NotImplementedException();
}
}


RepositoryFactory 这个类主要是框架内部使用,用于根据实体类型找到仓储。
现在的问题是如果 repoCache 字段不使用HasTable而使用Dictionary<>该如何声明。

使用框架时可以为每个聚合新建仓储类型,比如:
public class UserRepository: Repository<User>{}

...全文
91 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
cheng2005 2016-03-26
  • 打赏
  • 举报
回复
定义一个IRepository,使IRepository<T>继承于IRepository,缓存IRepository,然后转成对应IRepository<T>。
software_artisan 2016-03-26
  • 打赏
  • 举报
回复
用List<T>缓存不就好了?

110,545

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧