Sto cercando di creare un metodo generico in C#, che chiamerà diversi metodi basati sul tipo di argomento argomento nel suo corpo ed elaborerà i risultati successivamente. Sto cercando di ottenere questo risultato creando un metodo generico di wrapper e quindi fornendo diversi overload del metodo di elaborazione, incluso uno generico che verrà utilizzato se non è disponibile un sovraccarico specifico.C#: il metodo generico non chiama il metodo specifico overload
Quando chiamo direttamente il metodo di elaborazione, la versione appropriata è selezionata correttamente. Tuttavia, quando lo chiamo dal metodo wrapper, seleziona sempre quello generico, anche se c'è un sovraccarico corrispondente per il tipo di dati specifico che gli ho passato.
C'è un modo per regolare il codice per farlo funzionare nel modo in cui è necessario? O devo usare un approccio diverso.
Ho bisogno che il codice sia compatibile con 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();
}
}
si potrebbero avere overload di FuncWrap che accettano anche int e string (o semplicemente usano i metodi Func direttamente senza wrapping). –