C #: универсальный метод не вызывает конкретную перегрузку метода
Я пытаюсь создать универсальный метод в C #, который будет вызывать различные методы, основанные на типе аргумента в его теле, и впоследствии обрабатывать их результат. Я пытаюсь достичь этого путем создания универсального метода-обертки, а затем предоставлю несколько перегрузок метода обработки, включая общий, который будет использоваться, если нет конкретной перегрузки.
Когда я вызываю метод обработки напрямую, соответствующая версия выбирается правильно. Однако, когда я вызываю его из метода-обертки, он всегда выбирает общий, даже если есть соответствующая перегрузка для конкретного типа данных, который я ему передал.
Есть ли способ настроить код так, чтобы он вел себя так, как мне нужно? Или я должен использовать другой подход.
Мне нужен код, чтобы быть совместимым с Mono 2.6.
using System;
class Program
{
static void Func<T>(T val)
{
Console.WriteLine("Generic Func");
}
static void Func(int val)
{
Console.WriteLine("Int Func");
}
static void Func(string val)
{
Console.WriteLine("String Func");
}
static void FuncWrap<T>(T val)
{
Console.Write("Wrap: ");
Func(val);
}
static void Main(string[] args)
{
Func(2);
Func("Potato");
Func(2.0);
FuncWrap(2);
FuncWrap("Potato");
FuncWrap(2.0);
Console.Read();
}
}