如何创建类的实例

本文关键字:实例 创建 何创建 | 更新日期: 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>();