Как описано в топике о структуре 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