我有一个基本实体:
public class BaseEntity<TPrimary>
{
public T Id {get;set;}
public string Name {get;set;}
// + other methods ...
}
与:
一起public class BaseEntityManager<TBaseEntity, TPrimaryKey>
where TBaseEntity : BaseEntity<TPrimary> { ... }
另外,我有以下两个用于将数据放入缓存的类:
public class BaseEntityCacheItem
{
public List<BaseEntityCacheItem> Items {get; set;}
}
public class BaseEntitySingleCacheItem
{
public object Id {get;set;}
public string Name {get;set;}
}
现在,在经理内部,我想从数据库中返回所有项目。首先我检查一下,如果它们在Cache中,那么我将它们返回,否则我将访问数据库。
现在问题是从缓存中读取时,我会读取BaseEntityCacheItem
,其Items
属性List<BaseEntitySingleCacheItem>
。
如何将List<BaseEntitySingleCacheItem>
转换为List<TBaseEntity<TPrimary>>
。
这就是我想要做的事情:
var entity = await GetListFromCacheAsync();
var instances = new List<TBaseEntity>();
foreach(BaseEntitySingleCacheItem in entity.Items)
{
instances.Add(new BaseEntity<TPrimaryKey> { Id = e.Id } );
}
return instances;
所以我们的想法是在确定TPrimary
和TBaseEntity
后,在运行时返回Cache中的对象列表。