Форум программистов, компьютерный форум, киберфорум
C# .NET
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.67/3: Рейтинг темы: голосов - 3, средняя оценка - 4.67
3 / 3 / 1
Регистрация: 10.11.2019
Сообщений: 116
.NET 8

Generics. Выдает ошибку в компиляторе, хотя, вроде как, её не должно быть

17.12.2024, 01:25. Показов 942. Ответов 4
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Если указан where, то конкретизируется ведь объект, однако все равно выдает ошибку
P.S. Cast - не решение (да и не механизм объекта не работает после)
P.SS. Если generic вписать в SomeAbstract - все работает. Однако такое решение не подходит, так как SomeAbstract используется в VM
XML
1
x:DataType
(Не указать T по итогу)
C#
1
2
3
4
5
public abstract class SomeAbstract
{
public SomeAbstract(Observable<IChangeSet<IMyInterface>> observableItems)
{ }
}
C#
1
2
3
4
5
6
7
8
9
10
public class SomeClass<T> : SomeAbstract
where T : IMyInterface
{
 
public SomeClass(
IObservable<IChangeSet<T>> observable)
 
: base(observable)
{ }
}
Argument 1: cannot convert from 'System.IObservable<DynamicData.IChangeS et<T>>' to 'System.IObservable<DynamicData.IChangeS et<VM.IMyInterface>>'
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
17.12.2024, 01:25
Ответы с готовыми решениями:

Syntax error хотя вроде быть не должно
Ругается на пропущенную ';' хотя она стоит. Output: 1&gt;c:\android\project\proj.win32\gamescene.h(22): error C2146: syntax error :...

Значение должно быть целым числом. Вроде не должно быть ошибки
Значение должно быть целым числом

В результате вычислений программа выдает нули(хотя так не должно быть)
Программа должна посчитать некоторые две величины по формулам, которые проверены аналитически, конечно. Но в результате вычислений одна из...

4
Эксперт .NET
 Аватар для kolorotur
17823 / 12973 / 3382
Регистрация: 17.09.2011
Сообщений: 21,261
19.12.2024, 13:19
Интерфейс IChangeSet<T> — инвариантный, следовательно если имеется тип B, наследующийся от А (или реализующий интерфейс А), то ссылку на IChangeSet<B> нельзя привести к IChangeSet<A>.
Сделано это специально чтобы через ссылку на базовый тип нельзя было в загон к овцам посадить волка только потому, что оба реализуют IAnimal.
0
151 / 135 / 29
Регистрация: 02.07.2013
Сообщений: 973
19.12.2024, 14:19
Цитата Сообщение от kolorotur Посмотреть сообщение
Интерфейс IChangeSet<T> — инвариантный, следовательно если имеется тип B, наследующийся от А (или реализующий интерфейс А), то ссылку на IChangeSet<B> нельзя привести к IChangeSet<A>.
Сделано это специально чтобы через ссылку на базовый тип нельзя было в загон к овцам посадить волка только потому, что оба реализуют IAnimal.
а тут никак ковариантность и контрвариантность (ключевые слова in out) не задействована?
0
Эксперт .NET
 Аватар для kolorotur
17823 / 12973 / 3382
Регистрация: 17.09.2011
Сообщений: 21,261
19.12.2024, 14:26
Цитата Сообщение от golosalex Посмотреть сообщение
а тут никак ковариантность и контрвариантность (ключевые слова in out) не задействована?
IObservable<out T> — ковариантный, но у IChangeSet<T> модификаторов типа нет, что делает его инвариантным.
1
151 / 135 / 29
Регистрация: 02.07.2013
Сообщений: 973
20.12.2024, 14:27
Цитата Сообщение от kolorotur Посмотреть сообщение
IObservable<out T> — ковариантный, но у IChangeSet<T> модификаторов типа нет, что делает его инвариантным.
пардон. я когда писал, то думал, что IChangeSet - это какой-то интерфейс, который создается в пользовательском коде. ну и намекнул, что можно использовать in out модификаторы
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
20.12.2024, 14:27
Помогаю со студенческими работами здесь

Выдаёт ошибку «Значение должно быть скалярным»
Присваиваю x значение. Ввожу уравнение по которому надо посчитать x. В числители 2 дроби присутствует acot и он светится красным и пишет...

Code::Blocks выдаёт ошибку там где её не должно быть
Я решил написать простенькую программу по преобразованию градусов Цельсия в градусы Фаренгейта, а CodeBlocks выдаёт ошибку в строках 11 и...

на предпоследней строке мне выдает 89 ошибку, что не хватает скобки...хотя вроде всё на месте
{$N+,E+} program P6; uses crt; function f(x: double): double; begin f:=x*Arctan(x) end; function IntegralRect: double; var...

Консоль не читает enter пробел и tab как число (хотя вроде должно
Предыстория, пытаюсь создать свою строку, и ввод должен заканчиваться при вводе enter, но по какой то причине enter не воспринимается в...

Помогите с SQL запросом... (вроде должно быть просто, но не знаю как)
Как создать запрос типа: 'SELECT Count(*) AS ИмяПеременной FROM ИмяТаблицы' Если я подставляю строку в запрос на удаление происходит...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Новые блоги и статьи
Установка Qt Creator для C и C++: ставим среду, CMake и MinGW без фреймворка Qt
8Observer8 05.04.2026
Среду разработки Qt Creator можно установить без фреймворка Qt. Есть отдельный репозиторий для этой среды: https:/ / github. com/ qt-creator/ qt-creator, где можно скачать установщик, на вкладке Releases:. . .
AkelPad-скрипты, структуры, и немного лирики..
testuser2 05.04.2026
Такая программа, как AkelPad существует уже давно, и также давно существуют скрипты под нее. Тем не менее, прога живет, периодически что-то не спеша дополняется, улучшается. Что меня в первую очередь. . .
Отображение реквизитов в документе по условию и контроль их заполнения
Maks 04.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "ПланированиеСпецтехники", разработанного в конфигурации КА2. Данный документ берёт данные из другого нетипового документа. . .
Фото всей Земли с борта корабля Orion миссии Artemis II
kumehtar 04.04.2026
Это первое подобное фото сделанное человеком за 50 лет. Снимок называют новым вариантом легендарной фотографии «The Blue Marble» 1972 года, сделанной с борта корабля «Аполлон-17». Новое фото. . .
Вывод диалогового окна перед закрытием, если документ не проведён
Maks 04.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2. Задача: реализовать программный контроль на предмет проведения документа. . .
Программный контроль заполнения реквизитов табличной части документа
Maks 02.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2. Задача: 1. Реализовать контроль заполнения реквизита. . .
wmic не является внутренней или внешней командой
Maks 02.04.2026
Решение: DISM / Online / Add-Capability / CapabilityName:WMIC~~~~ Отсюда: https:/ / winitpro. ru/ index. php/ 2025/ 02/ 14/ komanda-wmic-ne-naydena/
Программная установка даты и запрет ее изменения
Maks 02.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2. Задача: при создании документов установить период списания автоматически. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru