У меня есть объекты POCO, которые ссылаются друг на друга, находя идентификаторы в репозиториях.Я не хочу, чтобы объекты имели сильные ссылки между собой, потому что в репозиториях есть политика кэширования, которая может удалять объекты.Другие объекты, которые ссылаются на них, должны просто перезагрузить их через репозиторий.Я использую AutoFac в качестве контейнера IoC.
Очень простой пример - ссылки на объект Region для объекта Currency:
class Region
{
...
public Currency GetCurrency()
{
... Get the right Currency object
}
...
}
Я экспериментировал с двумя способами сделать это.Во-первых, каждый раз, когда AutoFac запрашивает разрешение хранилища Currency, я могу вызвать Find (id).
Во-вторых, WeakReference, где я проверяю .IsAlive, чтобы посмотреть, могу ли я просто вернуть .Target или мне нужноразрешить хранилище и вызвать Find, и сделать WeakReference с тем, что я получил.
Я изучал небольшие накладные расходы, которые накладывает WeakReference, но я не уверен, как это сравнивается с запросом AutoFac разрешать каждый раз.
Мысли?
Редактировать: Принимая все время / усилия, которые нужны репозиторию для ответа .find - меня больше интересует, что дороже, WeakReferenceс накладными расходами или разрешением AutoFac.