我想在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();
}
}
你可以有一個接受int和string的FuncWrap重載(或者直接使用Func方法直接不包裝)。 – 2014-09-05 12:20:57