Как поместить фасад вокруг сущности NHibernate, которая имеет сопоставленные коллекции? - PullRequest
1 голос
/ 09 декабря 2011

В качестве примера представьте сопоставленную сущность с именем Customer, у которой есть свойство для списка заказов.

Я хочу написать класс, который адаптирует Customer к SpecialCustomer, и SpecialCustomer будет иметь свойство с именем SpecialOrders.который адаптирует / оборачивает список заказов Клиента.

Может кто-нибудь придумать способ сделать это, не нарушая семантику отложенной загрузки NHibernate?Если я создаю подкласс Customer и получаю возвращаемое свойство свой SpecialOrders для Orders.Cast (), я считаю, что ему придется перебирать все элементы в свойстве Orders (что мне не нужно), и я предпочел бы не выставлять Ordersнедвижимость в SpecialCustomer вообще, если это возможно.

Есть идеи?

1 Ответ

1 голос
/ 09 декабря 2011

Я не верю, что вы можете сделать это, используя List<T>, поскольку универсальный тип должен быть двухсторонним, и вы не можете объединить ковариацию и контравариацию.

Как насчет отображения защищенного свойства List<Order> OrdersCore и на Клиента, выставляющего свойство IEnumerable<Order> Orders, и на SpecialCustomer, выставляющего IEnumerable<SpecialOrder> SpecialOrders. Последний будет просто использовать OrdersCore.Cast (). Это не приведет к ненужной итерации списка, если только вызывающая сторона не сделает этого. Стоимость будет минимальной. Обратной стороной является то, что вы должны будете предоставить методы для каждого класса для AddOrder () и т. Д. С соответствующим типом параметра.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...