我认为这与整个方差有关,但我不太明白为什么不允许这样做。
我有一个方法
public void method(Func<Enum, String> func)
我有几种不同的方法,例如
public String doSomething(someEnum)
public String doSomethingElse(someOtherEnum)
我想打这样的电话
method(doSomething)
method(doSomethingElse)
但我收到这些错误
从“方法组”转换为
System.Func<System.Enum,string>
这不能做的原因是什么?我真的需要像这样将方法重写为多个方法吗?
public void method(Func<someEnum, String> func)
public void method(Func<someOtherEnum, String> func)
这真的很丑。
编辑:
我想在方法中做这样的事情(注意在我的实际代码中,enumType 也是作为 Type 传入的)
foreach (Enum val in Enum.GetValues(enumType))
{
func(val);
}