【发布时间】:2016-09-06 11:40:53
【问题描述】:
我有一个函数可以在运行时创建多个表的存储库字典,我想要的是使它成为通用的,但我被这个错误困住了..
public IRepository<TEntity> GetRepository<TEntity>(string TypeName) where TEntity : class
{
Type t = GetInstance(TypeName);
if (_repositories.Keys.Contains(t))
{
return _repositories[t] as IRepository<TEntity>;
}
var repository = new Repository<TEntity>(_context);
_repositories.Add(t, repository);
return repository;
}
当我把这个函数称为
string tn = tt.GetType().FullName;
Type tttt = GetInstance(tn);
uu.GetRepository<Object>(tn).Add(tt);
它抛出Exception
实体类型 Object 不是当前上下文模型的一部分。
我怎样才能做到这一点
string tn = tt.GetType().FullName;
Type tttt = GetInstance(tn);
uu.GetRepository<typeof(tt)>(tn).Add(tt);
或其他类型。
【问题讨论】:
-
你可以通过反射来实现,但有什么意义呢?然后它将忽略泛型类型参数的所有好处。为什么要这样做?
-
你初始化函数“uu”吗?
-
你正在使用实体框架?
-
@Evk 我有一个场景,每次我想保存和更新时,动态删除所有动态创建的记录。
-
@LinhTuan,是的,我初始化了 uu
标签: c# generics reflection