Если я правильно понимаю, вы должны будете сделать:
object[] enums = new object[30];
enums[0] = Enum1.Value1;
enums[1] = Enum2.AnotherValue;
Но тогда вам нужно будет получить доступ к этому (не строго набран, и легко ссылаться на неправильный индекс):
if ((Enum1)enums[0] == Enum1.Value1)
...
В .NET 4 вы можете использовать кортеж:
var enums = new Tuple<Enum1, Enum2>(Enum1.Value1, Enum2.AnotherValue);
if (enums.Item1 == Enum1.Value1)
...
... но я бы не рекомендовал его для стольких (30) перечислений, и я думаю, что есть даже пределиз 8 или около того.Вы также можете создать свой собственный класс:
class Enums
{
public Enum1 Enum1 { get; set; }
public Enum2 Enum2 { get; set; }
}
Enums enums = new Enums();
enums.Enum1 = Enum1.Value1;
enums.Enum2 = Enum2.AnotherValue;
if (enums.Enum1 == Enum1.Value1)
...
Я бы порекомендовал последний способ, потому что вы используете ссылочный тип, вы не зависите от позиции индекса, вы можете присвоить свойствам любое имя, какое захотитеи это сильно напечатано.Единственное, что вы «теряете» - это возможность легко перебирать список, но вы можете достичь этого с помощью Reflection, если вам действительно это нужно.