Как сослаться на родительский объект из дочернего объекта с помощью универсальных интерфейсов в C#?

У меня есть следующие объявления интерфейса:

interface IOrder<T> where T: IOrderItem
{
     IList<T> Items { get; set; }
}

interface IOrderItem
{
     IOrder<IOrderItem> Parent { get; set; } // What do I put here?
}

Я хочу, чтобы элементы в списке имели ссылку на объект заголовка, чтобы он мог использовать идентификатор и другие поля из заголовка.

В моих конкретных классах он жалуется, что я не реализую «Родитель» должным образом.

class StoreOrder : IOrder<StoreOrderItem>
{
    public IList<StoreOrderItem> Items { get; set; }
}

class StoreOrderItem : IOrderItem
{       
    public StoreOrder Parent { get; set; } // This doesn't satisfy the interface
}

Я попытался настроить IOrderItemкак IOrderItemи передать тип Parent, но это привело к круговой ссылке, так как класс Header требует тип класса Item... Я запутался.

Какие-нибудь советы о том, как это правильно реализовать?

5
задан IronicMuffin 15 March 2012 в 18:53
поделиться