title: DDD: aggregate root specialization
body: <p>I have an aggregate root <code>Order</code> with corresponding <code>OrderService</code> and <code>OrderRepository</code>. </p>
  
  <p>I have an <code>ExtendedOrder</code> with corresponding <code>ExtendedOrderService</code> and <code>ExtendedOrderRepository</code>. </p>
  
  <p>For example:</p>
  
  <pre><code>class Order {
     int GetOrderId();
  }
  
  class ExtendedOrder : Order {
     string GetExtendedInfo();
  }
  </code></pre>
  
  <p>I would like to have <code>OrderService</code> to return both type <code>Order</code> and <code>ExtendedOrder</code> as a list of <code>Order</code>. But to obtain <code>ExtendedOrder</code> it should ask to the corresponding <code>ExtendedOrderService</code> when the <code>Order</code> is of type <code>ExtendedOrder</code>.</p>
  
  <p>Is it possible to obtain this behavior?
  Is it legal to have an aggregate root extend another aggregate root?</p>