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 …
You can’t. Value type arrays aren’t covariant. You sort of want to write:
… but that’s not allowed either (type parameters can’t be constrained to be enums or delegates).
Options:
Allow any array:
Allow any array of value types:
Use Unconstrained Melody to write the first form, via IL-rewriting hack.