본문에서 인수 데이터 형식을 기반으로 다른 메서드를 호출하고 그 결과를 나중에 처리하는 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와 문자열을 취하는 FuncWrap 오버로드를 가질 수 있습니다 (또는 Func 메서드를 직접 랩핑하지 않고 사용하면됩니다). –