Допустим, я создаю универсальный метод и реализую некоторые типы, как показано в коде ниже.У меня также есть два объекта: Foo
и Bar
, где Bar
наследуется от Foo
.
. Затем я реализую универсальный метод для Foo
.
.Я вызываю метод с Bar
, почему он не достигает перегрузки Foo
метода?
Я проверил приведенный ниже код и вот что он возвращает.Меня больше интересует, почему это происходит.
Мой вопрос возникает потому, что я хочу обрабатывать Bet
и Bar
одинаково, поэтому тело метода будет таким же.Хотя я не могу понять, как это сделать без дублирования кода или создания другого метода, который отправляет правильный.
public class Foo
{
}
public class Bar : Foo
{
}
public class Bet : Foo
{
}
public static string Test<T>(T generic)
{
Console.WriteLine("T - generic overload");
return "Generic overload";
}
public static string Test(Foo foos)
{
Console.WriteLine("Foo - Foo overload");
return "Foo overload";
}
void Main()
{
Bar bar = new Bar();
Foo foo = new Foo();
Test(bar);
Test(foo);
}
Returns:
T - generic overload
Foo - Foo overload