如何创建类的实例
本文关键字:实例 创建 何创建 | 更新日期: 2023-09-27 17:56:40
下面是我的泛型类,我需要访问 GetAll 方法,我需要创建实例。如果此类访问 GetAll 方法,我如何创建实例。下面是我的代码
public class GenericRepository<TContext> : IGenericRepository
where TContext : DbContext, new()
{
private TContext _entities;
public TContext Context
{
get { return _entities; }
set { _entities = value; }
}
public virtual List<TEntity> GetAll<TEntity>() where TEntity : class
{
try
{
_entities = new TContext();
return _entities.Set<TEntity>().ToList();
}
catch (Exception)
{
return null;
}
}
}
public interface IGenericRepository
{
List<TEntity> GetAll<TEntity>() where TEntity : class;
}
因为类是一个泛型类,所以在像这样创建它时,它需要传递一个类型。
IGenericRepository referenceToRepostoryObject = new GenericRepository<MyDbContextClassName>();
这是你需要的吗?
var d1 = typeof(GenericRepository<>);
Type[] typeArgs = { typeof(Item) };
var makeme = d1.MakeGenericType(typeArgs);
var repository = (IGenericRepository)Activator.CreateInstance(makeme);
repository.GetAll<Item>();