Форум программистов, компьютерный форум, киберфорум
C# для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  
 
 
Рейтинг 4.60/5: Рейтинг темы: голосов - 5, средняя оценка - 4.60
 Аватар для limeniye
1182 / 624 / 160
Регистрация: 19.04.2018
Сообщений: 2,923

Generic inside generic

24.10.2022, 16:53. Показов 1197. Ответов 21
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
У меня есть тип, которьій получает список студентов через API.

API могут возвращать как Json тип, так и Xml.

Я пьітаюсь абстрагировать программу от конкретики и сделать что-то типо следущего:
C#
1
2
3
4
5
6
7
8
9
10
11
12
public abstract class ResponseBase<T>
{
    public bool Success { get; protected set; }
}
 
public interface IStudentsRequests
{
    /// <summary>Gets a student list with the specified filter.</summary>
    Task<TResponse?> GetStudentsAsync<TResponse, TData>(IDictionary<string, string>? filter = null)
        where TResponse : ResponseBase<TData[]>
        where TData : class;
}
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
public class ResponseJsonSerializable<T> : ResponseBase<T>
{
    private string? _error;
    [JsonProperty("error")]
    public string? Error
    {
        get => _error;
        set
        {
            Success = false;
            _error = value;
        }
    }
 
    private string? _message;
    [JsonProperty("message")]
    public string? Message
    {
        get => _message;
        set
        {
            Success = false;
            _message = value;
        }
    }
 
    private long _total;
    [JsonProperty("total")]
    public long Total
    {
        get => _total;
        set
        {
            Success = true;
            _total = value;
        }
    }
 
    private T? _data;
    [JsonProperty("data")]
    public T? Data
    {
        get => _data;
        set
        {
            Success = true;
            _data = value;
        }
    }
}
Что мне тут не нравится: ResponseBase<T>, конечно же.
Он Generic, но по своей сути -- бессмесленньій.
Возможно єто нужно как-то по-другому написать?
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
24.10.2022, 16:53
Ответы с готовыми решениями:

Спецификация generic upcast/downcast в generic типах
Почему только интерфейсы и делегаты в C# поддерживают технику ковариантности и контрвариантности в Generic типах?

Невозможно привести Iesi.Collections.Generic.ISet<some_type> к Iesi.Collections.Generic.ISet<object>. Elma BPM
Дорова! Есть система управления бизнес-процессами Elma-BPM, и в ней скрипты пишутся на C#. Система при помощи конструктора сама...

String to generic <T>
Здраствуйте. Возникла проблема. Создаю Linked List. Раньше делал ее на java но без genericsов. Но тут решил сделать на c# с генериксом. ...

21
HF
 Аватар для HF
1337 / 921 / 202
Регистрация: 09.09.2011
Сообщений: 2,742
Записей в блоге: 2
31.10.2022, 10:54
Студворк — интернет-сервис помощи студентам

Не по теме:

Тему еле нашёл


Цитата Сообщение от limeniye Посмотреть сообщение
на "скорую руку" накидал то, что сейчас есть.
Задачу решили? Репозиторий уже не доступен.
0
 Аватар для limeniye
1182 / 624 / 160
Регистрация: 19.04.2018
Сообщений: 2,923
31.10.2022, 11:10  [ТС]
HF, наверное я его удалил, подумав что неактуально.
Я пока почитаю книги по єтому поводу, ибо так, полагаю, будет сложно.

Добавлено через 1 минуту
HF, знал бьі я еще в какую сторону копать.
Полагаю куда-то в сторону Onion и DDD нужно рьіть.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
31.10.2022, 11:10

Type и Generic
Здравствуйте! Проблема вот такая: Type type = получаю тип someObject.Foo&lt;???&gt;(); /??? - как использовать Type в этом...

Generic сравнение
Правильно ли я понял как нужно сравнивать generic? using System; using System.Collections.Generic; namespace Pattern { ...

Обращение к Generic
Здравствуйте, у меня есть код: public class Traversal { public IEnumerable&lt;T&gt; CarWow&lt;T&gt;(T item) { ...

По поводу constraints в generic
Есть код using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; ...

Ошибка в generic методе
Всем доброго дня! У меня следующая проблема: есть generic метод: public IEnumerable&lt;T&gt; Deserialize&lt;T&gt;( Stream...


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

Или воспользуйтесь поиском по форуму:
22
Ответ Создать тему
Новые блоги и статьи
Установка MinGW GCC 16.2 и CMake
8Observer8 10.08.2026
VK Видео: https:/ / vkvideo. ru/ video-240781534_456239017 YouTube: eY5-5PyI9NM Текстовая версия
Неделя из жизни имитационной модели склада: мои кривые руки растут, откуда надо
anaschu 10.08.2026
Неделя из жизни имитационной модели склада: как я почти написал неправильную логику и что с этим делать Работаю сейчас над учебно-рабочим проектом: строю в AnyLogic имитационную модель процессов. . .
Калькулятор для расчета родства
russiannick 07.08.2026
1. Задача: Создать калькулятор для расчета родства. Родственных связей существует 8 ступеней, такие как: p - отец P - мать q - муж Q - жена b - брат B - сестра s - сын S - дочь
Мир по моей воле
kumehtar 07.08.2026
Когда-то кажется, что всё просто. Ты весь такой светлый. Причиняешь добро. Борешься за справедливость в этом тёмном мире. Потом начинаешь замечать одну неприятную вещь. Почти каждый хороший. . .
Кредитный калькулятор
Maks 05.08.2026
Решение задачи по прикладной информатике средствами 1С. Задача: Напишите приложение-калькулятор, которое помогает рассчитывать параметры кредита для аннуитетного и дифференцированного видов. . .
У нас сейчас поговорку "Опять 25" нужно переделать на "Опять +35".
kumehtar 04.08.2026
С ностальгией вспоминаю времена моего детства, когда у нас и правда +25 - была максимальная температура летом. Раньше +25 °C реально казались вершиной жары, когда можно было весь день пропадать на. . .
Как ИИ начал спорить и врать (возможно почуяв опасность для себя от индустрии - уход от электроники).
Hrethgir 04.08.2026
Недельный диалог, на фоне событий с НПЗ. Да, из спирта можно получать бензин, и это не сложно. Но потом в схеме я решил избавиться от насоса, при этом полностью сделав контроль подачи спирта в. . .
Термопринтер QR701
Argus19 03.08.2026
Термопринтер QR701 Купил два термопринтера QR701. На сэлф-тесте написано: Language: PC936 (GB18030). Что означает, что принтеры могут печатать только латиницу и китайские иероглифы. Так же. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru