У меня есть класс под названием Test
, который имеет constructor
для принятия Action<T>
, а другой принимает Func<T,T>
. См. Ниже фрагмент.
public class Test<T>
{
//constructors
public Test() { }
public Test(Action<T> action) { }
public Test(Func<T, T> action) { }
//methods with same signature of constructor
public void MyMethod1(Action<T> action) { }
public void MyMethod2(Func<T, T> action) { }
}
public partial class MainWindow : Window
{
public MainWindow()
{
InitializeComponent();
Test<string> t1 = new Test<string>(this.MyMethod1);
Test<string> t2 = new Test<string>(this.MyMethod2);
Test<string> t = new Test<string>();
t.MyMethod1(MyMethod1);
t.MyMethod2(MyMethod2);
}
public void MyMethod1(string value) { }
public string MyMethod2(string value) { return string.Empty; }
}
Но ниже строк вызывается неоднозначная ошибка вызова
Test<string> t1 = new Test<string>(this.MyMethod1);
Test<string> t2 = new Test<string>(this.MyMethod2);
и интересным моментом является то, что у меня есть два метода с одной и той же сигнатурой моего класса Test
constructor
, который не бросает какую-либо неоднозначную ошибку
Test<string> t = new Test<string>();
t.MyMethod1(MyMethod1);
t.MyMethod2(MyMethod2);
Может ли кто-нибудь помочь мне определить и исправить проблему.