tengo una clase con un método sobrecargado:llamada ambigua con una lambda en C# .NET
MyClass.DoThis(Action<Foo> action);
MyClass.DoThis(Action<Bar> action);
Quiero pasar una expresión lambda a la versión Acción:
MyClass.DoThis(foo => foo.DoSomething());
Desafortunadamente, Visual Studio correctamente no puede distinguir entre las versiones Action<Foo>
y Action<Bar>
, debido a la inferencia de tipo que rodea a la variable "foo", por lo que genera un error de compilación:
The call is ambiguous between the following methods or properties: 'MyClass.DoThis(System.Action
<Foo>
)' and 'MyClass.DoThis(System.Action<Bar>
)'
¿Cuál es la mejor manera de evitar esto?