Usings.RU

Класс 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

Exit mobile version