Проблема с использованием параметра ковариации, когда определение параметра и переданный параметр имеют один и тот же тиC#

Место общения программистов C#
Ответить Пред. темаСлед. тема
Anonymous
 Проблема с использованием параметра ковариации, когда определение параметра и переданный параметр имеют один и тот же ти

Сообщение Anonymous »

У меня определены следующие классы (код отредактирован для краткости)

Код: Выделить всё

public interface ICollectionItem
{}
Который, в свою очередь, наследуется:

Код: Выделить всё

public class CollectionItem : NotifyPropertyChanged, ICollectionItem
{}
И, в свою очередь, наследуется:

Код: Выделить всё

public class DeviceItem : CollectionItem, IDisposable, IAsyncDisposable
{
public DeviceItem(DeviceCollectionBase deviceCollection)
{}
}
У которого есть конструктор, поэтому я могу затем создать экземпляр DeviceItem из еще одного класса:

Код: Выделить всё

public abstract class DeviceCollectionBase : PacedItemCollection, IDisposable, IAsyncDisposable where T : ICollectionItem
{

protected override async Task UpdateCollection()
{
var v = new DeviceItem(this)...
}
}
Но параметр this отмечен ошибкой CS1503 «Тип аргумента DeviceCollectionBase не может быть назначен типу параметра DeviceCollectionBase , но T ограничен ICollectionItem.
Итак, здесь у нас есть определение параметра, запрашивающее ICollectionItem, и параметр, переданный в реализацию из ICollectionItem
Мои игры с ковариацией и/или контрвариантностью - дерьмо, поэтому я не совсем понимаю, где я ошибаюсь, и как обойти эту проблему, любая помощь пожалуйста?

Подробнее здесь: https://stackoverflow.com/questions/788 ... rameter-pa
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «C#»