将非泛型对象列表转换为通用对象列表

时间:2017-03-06 20:13:44

标签: c# generics caching

我有一个基本实体:

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;

所以我们的想法是在确定TPrimaryTBaseEntity后,在运行时返回Cache中的对象列表。

0 个答案:

没有答案