Аватар для limeniye
1182 / 624 / 160
Регистрация: 19.04.2018
Сообщений: 2,923

Generic inside generic

24.10.2022, 16:53. Показов 1205. Ответов 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
1340 / 924 / 202
Регистрация: 09.09.2011
Сообщений: 2,743
Записей в блоге: 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
Ответ Создать тему
Опции темы

Новые блоги и статьи
Когда логика программы не спасает от человеческих ошибок
Maks 18.08.2026
В последнее время всё чаще и чаще сталкиваюсь с таким явлением, как абсолютная невнимательность (или глупость) пользователей. Проявляется это чаще всего на работе в коллективе. Допустим, человек с. . .
Лето уходит
kumehtar 17.08.2026
Мысли в слух
kumehtar 17.08.2026
Забавно, насколько сейчас стала доступна информация. Например о магии, духовном развитии, медитациях, и других подобных направлениях, ранее зачастую тайных, передаваемых от учителя к ученику. Хотя. . .
Перемещение строк из ТЧ в другой документ с учетом текущего пробега
Maks 17.08.2026
Реализация из решения ниже выполнена на примере нетипового документа "Автозапчасти", с ТЧ "Шины". За основу взят алгоритм отсюда: https:/ / www. cyberforum. ru/ blogs/ 359708/ 10838. html Задача: . . .
Саморегулирующийся социальный контракт для сервера cross-section.
Hrethgir 14.08.2026
С кодом конечно таких глубоких размышлений пока не было, впрочем я уже привык к алгоритмизации. Суть предмета записи: снова в диалоге с нейросетью (я взял пока себе ник для учётки админа - Rector). . . .
Часы электронные
Uhbif79 12.08.2026
Выкладываю программу часов. Программа позволяет: 1. Использовать системное время и дату, 2. Есть возможность вводить время и дату вручную. 3. Реализованы 2 будильника: начало и конец рабочего дня. . . .
Часы с будильником на основе класса QLCDNumber
Uhbif79 12.08.2026
Всем добрый день, выкладываю программу часов с будильником на основе класса QLCDNumber. Здесь я пробовал самостоятельно создавал классы, впервые столкнулся с видимостью переменной одного класса из. . .
Установка MinGW GCC 16.2 и CMake
8Observer8 10.08.2026
VK Видео: https:/ / vkvideo. ru/ video-240781534_456239017 YouTube: eY5-5PyI9NM Текстовая версия
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru