У меня есть следующие объявления интерфейса:
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... Я запутался.
Какие-нибудь советы о том, как это правильно реализовать?