Вот почему SO так недружелюбен к новичкам: есть люди, которые явно чего-то не понимают, а затем указывают к смутно связанным проблемам только потому, что это доступно.
Кстати, ссылка не кажется мне ответом, а лишь предполагает, что причина в ковариации, и, возможно, интерфейс позволит это.
Ф.У. SO.
У меня определены следующие классы (код отредактирован для краткости)
Код: Выделить всё
public interface ICollectionItem
{}
Код: Выделить всё
public class CollectionItem : NotifyPropertyChanged, ICollectionItem
{}
Код: Выделить всё
public class DeviceItem : CollectionItem, IDisposable, IAsyncDisposable
{
public DeviceItem(DeviceCollectionBase deviceCollection)
{}
}
Код: Выделить всё
public abstract class DeviceCollectionBase : PacedItemCollection, IDisposable, IAsyncDisposable where T : ICollectionItem
{
protected override async Task UpdateCollection()
{
var v = new DeviceItem(this)...
}
}
Итак, здесь у нас есть определение параметра, запрашивающее ICollectionItem, и параметр, переданный в реализацию из ICollectionItem
Мои игры с ковариацией и/или контрвариантностью - дерьмо, поэтому я не совсем понимаю, где я ошибаюсь, и как обойти эту проблему, любая помощь пожалуйста?
Подробнее здесь: https://stackoverflow.com/questions/788 ... rameter-pa