What is the "general" type for an array of enum?
c#, enums
Solution
You can't. Value type arrays aren't covariant. You sort of want to write:
public void DoSomething<T>(T[] parameters) where T : struct, System.Enum
... but that's not allowed either (type parameters can't be constrained to be enums or delegates).
Options:
Allow any array:
public void DoSomething(Array parameters)
Allow any array of value types:
public void DoSomething<T>(T[] parameters)
Use Unconstrained Melody to write the first form, via IL-rewriting hack.
Problem
I have a method that would like to take as parameter an array of Custom `Enum` types. Something that would look like this: ``` public void DoSomething(WhatDoIPutHere[] parameters) ``` I would like to pass to this method either a `Enum1[]` or a `Enum2[]` where `Enum1` and `Enum2` are 2 `Enum` types. What do I need to use instead of `WhatDoIPutHere` ? I would have expected to define the signature of DoSomething as `Enum[]` as somehow `Enum` is the base class for Enum types (right?) : ``` public void DoSomething(Enum[] parameters) ``` but it gives a : cannot convert from 'xxx.Enum1[]' to 'System.Enum[]' I also tried defining it as `object[]` but I get the same kind of compiler error.. I know this is totally smelly code, and if I could I would definitely get rid of it ...