Вот простой код, где я пытаюсь реализовать какой-то полиморфизм.C# Полиморфизм: функция перегрузки, принимающая делегатов Действие <T> и Func <T,R>?
Вы можете увидеть перегруженную функцию Invoker
, принимая Func<T,R>
и Action<T>
в качестве аргумента.
компилятор говорит, что не может быть составлен из-за неопределенности, если методы INVOKER:
class Program
{
static void Invoker(Action<XDocument> parser)
{
}
static void Invoker(Func<XDocument,string> parser)
{
}
static void Main(string[] args)
{
Invoker(Action);
Invoker(Function);
}
static void Action(XDocument x)
{
}
static string Function(XDocument x)
{
return "";
}
}
я получаю 3 ошибки, а не от нее я могу объяснить (!). Вот они:
Ошибка 1 Вызов неоднозначен между следующими методами или свойствами: 'ConsoleApplication3.Program.Invoker (System.Action)' и 'ConsoleApplication3.Program.Invoker (System.Func)' C: \ Users \ i.smagin \ документы \ Visual Studio 2010 \ Projects \ ConsoleApplication3 \ ConsoleApplication3 \ Program.cs 21 4 ConsoleApplication3
Error 2 вызов неоднозначен между следующими методами или свойствами: «ConsoleApplication3.Program .Invoker (System.Action) 'и' ConsoleApplication3.Program.Invoker (System.Func) 'c: \ users \ i.smagin \ documents \ visual studio 2010 \ Projects \ ConsoleApp lication3 \ ConsoleApplication3 \ Program.cs 22 4 ConsoleApplication3
Ошибка 3 'строка ConsoleApplication3.Program.Function (System.Xml.Linq.XDocument)' имеет неправильный тип возвращаемого значения C: \ Users \ i.smagin \ документы \ visual studio 2010 \ Projects \ ConsoleApplication3 \ ConsoleApplication3 \ Program.cs 22 12 ConsoleApplication3
Любые идеи?
Я объединил ваш ответ в качестве дополнительного дополнения к вашему вопросу. Если вы хотите задать совершенно новый вопрос, просто откиньте мое редактирование и сделайте это. Пожалуйста, оставляйте ответы только в качестве ответов. –
Спасибо, Тим! –