Класс Class<T1, T2, …>

Как описано в топике о структуре Pair<F, S>, зачастую требуется объединять объекты различных типов во временные структуры (или классы). Случай для двух объектов рассмотрен в предыдущем топике.
Теперь рассмотрим случай большего количества объектов.


Можно рекурсивно использовать структуру Pair, например так:

C#:Select code
Pair<A, Pair<B, C>>

Не изящно, мягко говоря. Особенно, если классы A, B и C имеют длинные и мнемоничные квалификаторы пространства имен.

Вашему вниманию предлагается следующий шаблон:

C#:Select code
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
public class Class<T1, T2>
{
    public Class(T1 field1, T2 field2)
    {
        Field1 = field1;
        Field2 = field2;
    }

    public readonly T1 Field1;
    public readonly T2 Field2;
}

public class Class<T1, T2, T3> : Class<T1, T2>
{
    public Class(T1 field1, T2 field2, T3 field3)
        : base(field1, field2)
    {
        Field3 = field3;
    }

    public readonly T3 Field3;
}

public class Class<T1, T2, T3, T4> : Class<T1, T2, T3>
{
    public Class(T1 field1, T2 field2, T3 field3, T4 field4)
        : base(field1, field2, field3)
    {
        Field4 = field4;
    }

    public readonly T4 Field4;
}

....

Его использование полностью аналогично уже описанной структуре Pair, за тем лишь исключением, что Pair — структура, а не класс.

Удачи!

Обсуждение на форуме: http://usings.ru/forum/viewtopic.php?t=4

admin опубликовано 2009-6-10 Рубрика: Паттерны | Метки: , ,

4 ответов Оставить комментарий

  1. #1Anton @ 2009-8-26 15:33 Ответ

    Отличный проект, нашел тут много всего интересного. Не совсем понял как организован сайт, можно ли заливать свои классы сюда и если можно то как… нужна ли здесь регистрация и, если нужна, то как зарегистрироваться…

    Можно ли как-то связаться с администрацией через ICQ или еще как-то… как раз ищу грамотных разработчиков C# — Java, буду рад познакомиться.

    Антон. =)

  2. #2admin @ 2009-8-26 16:17 Ответ

    Спасибо.
    Публиковать статьи могут только зарегистрированные авторы. Зарегистрировать нового автора могу только я. Если Вы собираетесь принимать активное участие в развитиии проекта, буду рад пополнению команды.
    Работу, честно говоря, не ищу. Аську публиковать не буду, могу скинуть Вам на email, если хотите.

  3. #3Anton @ 2009-8-26 16:36 Ответ

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

  4. #4Anton @ 2009-8-26 16:38 Ответ

    или можно сразу в аську =))
    456-416-493

Ответить

(Ctrl + Enter)