У меня есть следующие классы:
public class Item
{
}
public class ItemCollection<TItem> : ICollection<TItem> where TItem : Item, new()
{
}
У меня есть два производных класса:
public class Feature : Item
{
}
public class Features : ItemCollection<Feature>
{
}
У меня есть класс менеджера для управления такими коллекциями:
public class ItemCollectionManager<TCollection> where TCollection : ItemCollection<Item>, new()
{
}
Я пытался использовать этот класс:
public class FeatureManager : ItemCollectionManager<Features>
{
}
но это приводит к:
«Тип Features
должен быть конвертируемым в ItemCollection<Item>
, чтобы использовать его как TCollection в универсальном классе ItemCollectionManager<TCollection>
».
И как упоминалось ранее,
Features
is-a ItemCollection<Feature>
а также
Feature
is-a Item
.
Я не считаю интерфейсы идеальным решением этой задачи, но готов измениться, если будет причина.
Если бы кто-нибудь мог посоветовать, что я делаю неправильно, это было бы очень признательно.
Спасибо.