可以';t访问基类中的函数

本文关键字:基类 函数 访问 可以 | 更新日期: 2023-09-27 18:22:45

我有一个带有服务引用的通用抽象基类。当我试图访问具体实现类的任何属性时,我会收到以下错误Repository"不包含"Add"的定义,也找不到接受"Repository"类型的第一个参数的扩展方法"Add"(是否缺少using指令或程序集引用?)

**Base class**
namespace Services
{
    public abstract class BaseRepository<T> : IRepository<T>
    {
        public IService<T> _serviceContext;
        public BaseRepository(IService<T> serviceContext)
        {
            _serviceContext = serviceContext;
        }
        #region IRepository<T> Members
        public List<T> GetAll()
        {
            return _serviceContext.GetAll();
        }
        public T GetById(Guid id)
        {
            throw new NotImplementedException();
        }
        public void Add(T entity)
        {
            _serviceContext.Add(entity);
        }
        public void Remove(T entity)
        {
            throw new NotImplementedException();
        }
        #endregion
    }
}
**Concrete class**
namespace Services
{
    public class SpecialRepository : BaseRepository<SpecialItem>, ISpecialRepository
    {
        public SpecialRepository() : base(new DataAccess.SpecialList()) 
        {
        }
    }
}
**Service Class**
namespace DataAccess
{ 
    public class SpecialList : IService<SpecialItem>
    {
        public List<SpecialItem> GetAll()
        {
            //Implementation 
        }
    }
} 
**Repository Interface**
namespace Domain
{
    public interface IRepository<T>
    {
        List<T> GetAll();
        T GetById(Guid id);
        void Add(T entity);
        void Remove(T entity);
    }
}
**Service Interface**
namespace DataAccess
{
    public interface IService<T>
    {
        List<T> GetAll();
        void Add(T entity);
    }
}

感谢您的帮助。提前感谢!

可以';t访问基类中的函数

您需要在SpecialList中定义一个Add方法。

我添加了一个,调用时没有出现错误

 SpecialRepository rep = new SpecialRepository();
 rep.Add(new SpecialItem());