关于接口实例化一个对象

IList IList11  = new  List ();

List List11 =new List ();


最近看到好多例子用接口声明一个对象,对这个感念比较模糊,于是去Google查了一下,发现大多都是概念上的解释,还是没有参透其中的内涵,现在我用实例来说明一下这部分的使用。

 public interface IQuoteMaster : IRepository//这里定义一个接口
    {
        IList GetAllBooks();
    }
    public class QuoteMasterHelper: Repository, IQuoteMaster
    {
        public QuoteMasterHelper(MyEntities dbcontext)  : base(dbcontext)
        {
            context = dbcontext;
        }
        public QuoteMasterHelper() : base() { }

        public IList GetAllBooks()//实现接口
        {
            var list = context.QuoteMaster.Where(p=>p.id>0).ToList();
            return list;

        }
        public IList GetAllBooks2()//这个函数接口里面没有定义
        {
            var list = context.QuoteMaster.Where(p => p.id > 0).ToList();
            return list;

        }
    }
接下来看如何调用:

 public class HomeController : Controller
    {
        private IQuoteMaster _IQuoteMaster;
        private QuoteMasterHelper _QuoteMasterHelper;
        private IUnitOfWork unitOfWork;
        // GET: /Home/
        public HomeController()
           {
               MyEntities MyDbContext = new MyEntities();
               _IQuoteMaster = new QuoteMasterHelper(MyDbContext);
               _QuoteMasterHelper = new QuoteMasterHelper(MyDbContext);
               unitOfWork = new UnitOfWork(MyDbContext);
           }
        public ActionResult Index()
        {


            IList listBook = _IQuoteMaster.GetAllBooks();
            IList listBook2 = _QuoteMasterHelper.GetAllBooks2();
            return View(listBook);
}}

我们会看到_IQuoteMaster无法调用GetAllBooks2(),只有_QuoteMasterHelper才能调用,

这下应该就明白了吧,IList IList11 =new List ();
只是想创建一个基于接口IList的对象的实例,只是这个接口的方法是由List实现的。所以它只是希望使用到List实现了IList接口的那些方法,非IList的方法,IList11就用不到了。 

你可能感兴趣的:(EntityFramwork)