C #: método genérico não chama sobrecarga de método específico
Estou tentando criar um método genérico em C #, que chamará métodos diferentes com base no tipo de dados argumento em seu corpo e processará seu resultado posteriormente. Estou tentando conseguir isso criando um método genérico de invólucro e, em seguida, forneça várias sobrecargas do método de processamento - incluindo um genérico que será usado se nenhuma sobrecarga específica estiver disponível.
Quando eu chamo o método de processamento diretamente, a versão apropriada é selecionada corretamente. No entanto, quando eu o chamo a partir do método wrapper, ele sempre seleciona o genérico, mesmo se houver uma sobrecarga correspondente ao tipo de dados específico que eu passei para ele.
Existe alguma maneira de ajustar o código para que ele se comporte da maneira que eu preciso? Ou eu tenho que usar uma abordagem diferente.
Preciso que o código seja compatível com o 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();
}
}