我已經實現了下面的代碼,但不知道接口是怎麼回事。我有兩個項目:Project.Web和Project.Core。有人可以幫我理解接口在這裏工作嗎?
在Project.Web,我有它實現了DataSource接口的基礎設施的命名空間:現在
namespace Project.Web.Infrastructure
{
public class ProjectDataSource : DbContext, IProjectDataSource
{
public ProjectDataSource() : base("DefaultConnection") // 1) What is this constructor doing?
{
}
public DbSet<Set> Sets { get; set; }
public DbSet<Card> Cards { get; set; }
void IProjectDataSource.Save() // 2) This method isn't even defined in the interface, what value does it provide?
{
SaveChanges();
}
IQueryable<Card> IProjectDataSource.Cards // 3) This gets me a list of Cards, but from where?
{
get { return Cards; }
}
IQueryable<Set> IProjectDataSource.Sets
{
get { return Sets; }
}
}
}
,在Project.Core我有IProjectDataSource,接口:
namespace Project.Core
{
public interface IProjectDataSource
{
IQueryable<Card> Cards { get; }
IQueryable<Set> Sets { get; }
IQueryable<Side> Sides { get; }
void Save();
}
}
中的Web項目控制器,我有這樣的代碼:
namespace Project.Web.Controllers
{
public class SetController : Controller
{
private readonly ProjectDataSource _db;
public SetController(ProjectDataSource db)
{
_db = db;
}
問題1-3 ar在代碼中,我的最後一個問題是4)最後一塊代碼究竟發生了什麼?爲什麼具有SetController的構造函數會使代碼更少耦合?
任何具有明確示例的指針都會有所幫助 - 我一直在努力地理解接口,所以我可以開始在我的MVC應用程序中實現服務層,但我掙扎了一下。非常感謝。