#c_sharp
Имеется класс команды, в упрощенном виде выглядящий так :
public class Command
{
public Command(int price, Action method)
{
method.Invoke();
}
public Command(int price, Func method)
{
var id = method.Invoke();
}
}
В конструкторе 1 принимающий int и Action - ссылку на метод который ничего не возвращает.
В конструкторе 2 Func - ссылку на метод который возвращает целое число. Так же
у меня есть 2 метода, котрые могут передаваться в конструктор :
public void toDosome()
{
}
public int newId()
{
return 100500;
}
Далее я создаю обьект и проблем не возникает :
var command = new Command(11, newId);
Однако если вместо newId окажется toDosome :
var commandTo = new Command(1211, toDosome);
Мне выпадет исключение :
The call is ambiguous between the following methods or properties.
При этом я не могу удалить какой либо конструктор, что бы успешно создавать command
или commandTo. Как поступить в такой ситуации ?
Ответы
Ответ 1
Создавайте явно делегат типа Action, передавая целевую функцию делегату и проблема выбора перегрузки функции исчезнет var commandTo = new Command(1211, new Action(toDosome));
Комментариев нет:
Отправить комментарий