Привет, может кто-нибудь сказать мне, как вы могли бы написать метод для получения хранилища определенного типа из единицы работы?
Итак, моя единица работы:
public class UnitOfWork : IUnitOfWork, IDisposable
{
private Context context = new Context();
private VectorCheckRepository<Invoice> _invoiceRepository;
private VectorCheckRepository<InvoiceLine> _invoiceLineRepository;
public virtual Repository<Invoice> InvoiceRepository
{
get
{
if (this._invoiceRepository == null) {
this._invoiceRepository = new VectorCheckRepository<Invoice>(context);
}
return _invoiceRepository;
}
}
public virtual VectorCheckRepository<InvoiceLine> InvoiceLineRepository
{
get
{
if (this._invoiceLineRepository == null) {
this._invoiceLineRepository = new VectorCheckRepository<InvoiceLine>(context);
}
return _invoiceLineRepository;
}
}
public void Save()
{
context.SaveChanges();
}
private bool disposed = false;
protected virtual void Dispose(bool disposing)
{
if (!this.disposed) {
if (disposing) {
context.Dispose();
}
}
this.disposed = true;
}
public void Dispose()
{
Dispose(true);
GC.SuppressFinalize(this);
}
}
Однако во время выполнения я хочу получить хранилище из единицы работы, основанной на типе.
Так скажем, я пошел:
_unitOfWork.GetRepository (invoice);
Я хотел бы получить обратно InvoiceRepository, потому что я передал ему счет.
или:
_unitOfWork.GetRepository(invoiceLine);
Я бы хотел, чтобы он возвратил InvoiceLineRepository.
Кто-нибудь знает, как этого добиться?