我不知道如何正確管理C#中的接口。我的目標是爲我的業務層服務創建一個抽象類,它具有一些調用不同DAL存儲庫方法的常用方法(如Save(),Dispose())。我想避免在我所有的服務類似重複:C#接口實現
public Save()
{
repository.Save();
}
我有類似的情景:
接口
namespace Common
{
public interface IRepository
{
void Save;
void Dispose;
}
}
DAL
namespace DAL
{
public Repository : IRepository
{
public void Save() {};
public void Dispose() {};
public void Add() {}
}
}
BL
namespace BL
{
public abstrac BaseService
{
protected IRepository repository;
protected BaseService(IRepository repo)
{
repository = repo;
}
public Save()
{
repository.Save();
}
}
//...
//Tentative 1
public Service : BaseService
{
private Repository rep;
public Service()
: base(new DAL.Repository())
{
rep = base.repository; // ERROR: cannot convert IRepository to Repository
}
}
}
我也試過這樣:
//Tentative 2
public Service : BaseService
{
private IRepository rep;
public Service()
: base(new DAL.Repository())
{
rep = base.repository; // OK
}
public void Add()
{
rep.Add() // ERROR: IRepository doesn't contain a definition for 'Add'
}
}
我知道我可以在接口定義所有我想要使用的方法,但我將不得不管理很多問題與泛型類型,正如你應該從我瞭解的問題,我在C#相當新的,我希望能避免複雜性是可能的,utill我會更加的專家至少:)
因爲(我剛剛更新了這篇文章)我想在基類中包裝一些基本上相同的Saves()方法,但是引用了不同的DAL存儲庫..希望你能理解我..我對C#和英語都有問題;) – Davide