C # Как использовать один метод для двух классов с универсальным типом? - PullRequest
0 голосов
/ 27 мая 2019

Мне нужно объединить два разных метода печати в один.У меня есть два общих класса и мой собственный класс общего списка.Допустим, у меня есть

static void Print(string fv, MyListClass<Module> A,
            string top)
 and static void Print2(string fv, MyListClass<Student> A,
            string top)

Внутри метод тот же, но как сделать так, чтобы они были одним методом, и в Главном классе я выбираю в параметрах, какой список классов я печатаю, Модуль либо Студент.Мои данные в:

MyListClass<Student> Stud; 
MyListClass<Module> Mod;

Ответы [ 2 ]

3 голосов
/ 27 мая 2019

У меня есть два универсальных класса и мой собственный универсальный класс списка.

Почему у вас есть свой собственный класс списка? Вы вообще не должны. Предполагая, что он реализует IEnumerable<T>:

Пусть и Module, и Student реализуют общий интерфейс со свойствами, которые вы хотите распечатать, скажем IPrintable:

public interface IPrintable
{
    string Name { get; }
    string Description { get; }
}

public class Module : IPrintable { ... }
public class Student : IPrintable { ... }

Теперь создайте метод с универсальным параметром:

void Print<T>(string fv, IEnumerable<T> A, string top)
    where T : IPrintable
{
    foreach (var item in A)
    {
        Console.WriteLine(item.Name + ": " + item.Description);
    }
}
1 голос
/ 27 мая 2019

Для этого вы просто создаете базовый класс, извлекаете из него класс Module и Student, а затем используете базовый класс в сигнатуре одиночного метода.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...