枚举数组的"通用"类型是什么?

tsi*_*lar 3 c# enums

我有一个方法,希望将参数作为自定义Enum类型数组.

看起来像这样的东西:

public void DoSomething(WhatDoIPutHere[] parameters)
Run Code Online (Sandbox Code Playgroud)

我想传递给这个方法a Enum1[]或者Enum2[]where Enum1Enum22 Enum种类型.

我需要使用什么而不是WhatDoIPutHere

我本来希望定义DoSomething的签名,因为Enum[]它以某种方式Enum是Enum类型的基类(对吧?):

public void DoSomething(Enum[] parameters)
Run Code Online (Sandbox Code Playgroud)

但它给出了:

无法从'xxx.Enum1 []'转换为'System.Enum []'

我也尝试将其定义为object[]但我得到了同样的编译器错误..

我知道这是完全臭的代码,如果我能,我肯定会摆脱它...

Jon*_*eet 6

你不能.值类型数组不是协变的.你有点这样写:

public void DoSomething<T>(T[] parameters) where T : struct, System.Enum
Run Code Online (Sandbox Code Playgroud)

...但是也不允许这样做(类型参数不能被限制为枚举或委托).

选项: