Я читаю при использовании репозитория. Иногда я вижу, что хранилище - это свойство объекта. Мне было интересно, что за и против.
public interface IRepository<T>
{
T GetById(int id);
void Update(T);
}
public class FooRepository : IRepository<Foo>
{
public Foo GetById(int i)
{ /* code ..*/ }
void Update(Foo)
{ /*code..*/ }
}
public class Foo
{
public IRepository Repository {get;set;}
public void Update()
{
Repository.Update(this);
}
}
Зачем использовать это приложение? Разве не имеет смысла использовать хранилище и разделенный объект сущности? Чтобы объект сущности не знал ни о каких хранилищах?
EDIT:
Но что, если у вас есть один главный объект и разные подобъекты:
public class MainObject
{
public int Id {get;set;}
public List<ISubject> SubObjects {get;}
}
public interface ISubObject
{
}
public class SubObjectA : ISubObject
{
public string SomeProperty {get;set;}
public int Id {get;set;}
public int MainObjectId {get;set;}
}
public class SubObjectB : ISubObject
{
public string AnotherProperty{get;set;}
public int Id {get;set;}
public int MainObjectId {get;set;}
}
Итак, SubObjectA и SubObjectB - это разные типы, но реализуют интерфейс ISubject. Главный объект имеет список этих подобъектов. Каждый подобъект имеет свой собственный репозиторий. Как бы вы загрузили подобъекты?